Можно ли выполнить команду относительно сценария оболочки терминала? - PullRequest
1 голос
/ 13 февраля 2012

У меня есть файл сценария терминала Shell start.command, который я запускаю из поиска с:

ls -l

Файл находится в ~/foo, но список ~, могу ли я получить путь к нему, содержащему dir. Я хотел бы запустить приложение, которое находится в той же папке, что и файл, когда пользователь запускает .command, но кажется, что для этого мне понадобится абсолютный путь к файлу.

1 Ответ

5 голосов
/ 17 февраля 2012

Предполагая bash, вам нужно cd в каталог, в котором находится скрипт, перед запуском ls.

Вы можете однострочить его следующим образом:

cd "$(dirname "$0")"

$0это относительный путь скрипта, т.е. все, что вы использовали в командной строке для его вызова.dirname удаляет имя файла из пути.

$() - это расширение значения для подачи в cd, и все кавычки необходимы для обработки таких вещей, как пробелы в путях.

...