===[ Linux ]=== #post-id: 5688-20-34 #original-date: 21.02.2016 Sun #original-time: 8:34 PM #original-day: 5688 #original-host: WinXP Home SP3 (Build 2600) Вопрос знатокам баш-скриптинга. Как получить каталог, в котором находится выполняющийся скрипт, чтобы в самом скрипте подставлять его у другим файлам, которые должны искаться в каталоге скрипта? Например, в Windows я использую конструкцию вида «%~d0%~p0», которая берёт диск и путь к каталогу, в котором лежит выполняющийся BAT файл (его имя получается из переменной %0). В итоге на файлы я ссылаюсь так: «%~d0%~p0SomeDataFile.TXT». А как это сделать в Баше? Как из $0 вытащить такую же информацию? #upd: При помощи пойнтожуйкеров проблему решила двумя способами. Так: > MY_DP=$( dirname $( realpath "$0" ) ) Или так: > MY_DP=$( dirname $( readlink -e "$0" ) ) В первом нужно устанавливать дополнительную утилиту, а второй работает сразу. #upd: Попутно напомнили, что вместо «%~d0%~p0» можно написать «%~dp0». #upd: Подсказали, где у меня могут возникнуть проблемы. Поэтому переделала вот так (вообще-то, это была изначальная версия, пока я не решила сократить). > MY_RP=$( realpath "$0" ) > MY_DP=$( dirname "$RP" ) Или так: > MY_RP=$( readlink -e "$0" ) > MY_DP=$( dirname "$RP" )