2015-10-19 6 views
0

Я пишу скрипт оболочки, который запускает команду pwd и использует свой вывод для некоторых других задач, выполняемых скриптом. Сценарий работает отлично, когда я перехожу в конкретный каталог и запускаю его. Но когда я пытаюсь запустить скрипт из другого места, предоставив полный путь к скрипту, я не получаю желаемый результат, так как команда pwd предоставляет путь текущей директории. Как я могу решить эту проблему? Как я могу написать что-то, что будет корректно, независимо от того, откуда я запускаю сценарий?
Эта проблема возникает, когда я использую .. для перехода к предыдущему каталогу. Я хочу, чтобы сценарий принимал путь относительно своего местоположения вместо пути, где выполняется сценарий. Пожалуйста, дайте мне знать, если требуются другие детали.Абсолютный и относительный путь в Linux

ответ

0

Вы можете использовать $0 извлечь сценарий и затем объединить его с pwd

$ cat abc.sh 
echo $0 

DIR1=$(dirname `pwd`/$0) 
echo $DIR1 

DIR2="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 
echo $DIR2 

Есть другие способы его достижения во всех случаях:

Смежные вопросы