Мне нужно запустить скрипт, который обращается к файлу по тому же пути, в котором он находится.
Например: у меня есть скрипт /home/me/folder/script.sh
, и этот скрипт будет обращаться к файлу /home/me/folder/myfile
. Поскольку файл находится в том же пути сценария, я просто использую имя myfile
, а не полный путь.
Но если я запускаю его /tmp/
, например:
/tmp$ /home/me/folder/script.sh
это дает мне:
myfile: No such file or directory
Итак, как я могу сказать в сценарии, что файл находится в том же пути, что и сам сценарий?
shell
scripting
shell-script
path
Том Брито
источник
источник
Ответы:
Как насчет
$(dirname "$0")/myfile
?источник
Вы не можете знать ни при каких обстоятельствах, но часто (не всегда), когда вы запускаете сценарий по пути вместо того, чтобы разрешить поиск в оболочке
$PATH
, путь к сценарию будет указан$0
. Затем вы можете использоватьdirname "$0"
или,${0%/*}
чтобы получить путь.источник
Я обычно делал бы что-то вроде этого во главе моего сценария:
Или, чтобы получить полный путь к каталогу скрипта (вместо относительного пути):
Тогда просто ссылка,
${SCRIPTDIR}
где это необходимо.источник