Каков наилучший способ написать сценарий оболочки, который будет обращаться к файлам по отношению к нему, чтобы не иметь значения, откуда я его вызываю? «Легкий» означает самый простой/рекомендуемый способ, который будет работать в разных системах/оболочках.Создание сценариев оболочки, надежных по отношению к местоположению, из которого они вызваны от
Пример
Скажем, у меня есть папка ~/MyProject
с подпапок scripts/
и files/
. В scripts/
, у меня есть скрипт foo.sh
, который хочет получить доступ к файлам в files/
:
if [ -f "../files/somefile.ext" ]; then
echo "File found"
else
echo "File not found"
fi
Это будет работать хорошо, если я cd ~/MyProject/scripts && ./foo.sh
, но он потерпит неудачу с cd ~/MyProject && scripts/foo.sh
.
См. если http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in помогает. –