pushd . > /dev/null SCRIPT_PATH="${BASH_SOURCE[0]}" if ([ -h "${SCRIPT_PATH}" ]); then while([ -h "${SCRIPT_PATH}" ]); do cd `dirname "$SCRIPT_PATH"`; SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done fi cd `dirname ${SCRIPT_PATH}` > /dev/null SCRIPT_PATH=`pwd`; popd > /dev/null
Работы для всех версий, включая
source
"иначе .
(точечный) оператор. $0
изменяется от вызывающей стороны. "./script"
"/full/path/to/script"
"/some/path/../../another/path/script"
"./some/folder/script"
С другой стороны, если сам сценарий удара является относительной символьной ссылкой, Вы хотите следовать за ним и возвратить полный путь связанного - к сценарию:
pushd . > /dev/null
SCRIPT_PATH="${BASH_SOURCE[0]}";
if ([ -h "${SCRIPT_PATH}" ]) then
while([ -h "${SCRIPT_PATH}" ]) do cd `dirname "$SCRIPT_PATH"`; SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
fi
cd `dirname ${SCRIPT_PATH}` > /dev/null
SCRIPT_PATH=`pwd`;
popd > /dev/null
SCRIPT_PATH
дан в полном пути, неважно, как это называют.
Просто удостоверьтесь, что Вы определяете местоположение этого в начале сценария.
Этот Копилефт комментария и кода, выбираемая лицензия под GPL2.0 или позже или CC-SA 3.0 (Доля CreativeCommons Одинаково) или позже. (c) 2008.Все права защищены. Никакая гарантия любого вида. Вас предупредили.
http://www.gnu.org/licenses/gpl-2.0.txt
http://creativecommons.org/licenses/by-sa/3.0/
18eedfe1c99df68dc94d4a94712a71aaa8e1e9e36cacf421b9463dd2bbaa02906d0d6656
Код библиотеки предназначен для многократного использования, а код приложения - нет. Храните код в библиотеке, если он не привязан конкретно к приложению.
В случае сомнений попробуйте ответить на следующий вопрос:
Если я напишу другое приложение, останется ли этот код?
Мое общее практическое правило: все, что может когда-либо использоваться в другом проекте, и может быть легко сделано так, чтобы оно не зависело от какого-либо кода, специфичного для приложения (и есть все виды методов, чтобы сделать это) должен перейти в библиотеку. Поэтому, если он потенциально может использоваться повторно, он помещается в библиотеку.
When faced with these kind of categorisation questions I want to know one thing: the consequences of miscategorisation.
This code is "library", that code is "application" ... for whose benefit is this distinction being made? What would happen if we put some code in the wrong category?
One possible answer:
It affects the reuse of the code. Lets suppose that we have a policy: library code is available in a DLL with the required headers etc. Application code is just deployed in a .EXE.
Put a nice routine for doing a difficult calculation in the App, not the library, then it can't readily be reused.
Perhaps further things follow from that line of thinking ... questions of versioning apply. Do we need to produce better documentation? [Even with a single developer we might take more care?] Do we need to externalise configuration information, mak doubly sure not to hard code anything?