Если вы используете bash (т.е. скрипт начинается с #!/bin/bash
), вы можете использовать $ BASH_SOURCE, чтобы получить имя файла скрипта. Отсюда вы можете получить каталог, в котором он находится:
mydir="$(dirname "$BASH_SOURCE")"
... а затем используйте это для поиска файлов, относящихся к сценарию, например, cp "$mydir/fileInTheSameFolder" /tmp
(и, пожалуйста, всегда используйте двойные кавычки вокруг него, как я это сделал здесь)
Обратите внимание, что это может быть относительный путь; например, если скрипт был запущен из интерактивной оболочки с ./scriptname.command
, он просто будет выглядеть как «.». Это не должно быть проблемой, если сценарий компакт-диска не находится где-то еще, но если вам нужен полный путь, вы можете использовать его вместо этого:
mydir="$(cd "$(dirname "$BASH_SOURCE")" && pwd)" || {
echo "Error getting script directory" >&2
exit 1
}
Или просто cd
в каталог скрипта в начале скрипта:
cd "$(dirname "$BASH_SOURCE")" || {
echo "Error getting script directory" >&2
exit 1
}