Intereting Posts
RPM и ISO, установка пакетов Добавление последовательных символов для дублирования слов в соответствии с порядком их появления Как приостановить перечисление длинного текстового файла с кошкой в ​​командной строке после 10 строк, затем нажмите любую клавишу Низкий уровень ввода / вывода на Linux Как импортировать историю bash с правильным временем и датой из вывода истории? Стек TCP / IP в пользовательском контексте против ядра Linux Как я могу * автоматически * создавать резервные копии моих контактов в Google Contacts / Gmail? Как установить Arch Linux на ноутбук с Intel GMA 4500 MHD? У меня высокий уровень. Высокий пишет. Но какие файлы пишутся? Отсутствует исполняемый файл «CentOS» Tuxcut -software в ubuntu Какой порядок поиска используется для печати Рекурсивно удалять файлы с именем «WIDTHxLENGTH» в имени в каталоге Сеть Intel Skylake + DisplayPort 1.2 MST / Daisy на Linux Как настроить разные сеансы для разных пользователей?

Может ли исполняемый файл узнать, где он хранится?

Может ли исполняемый файл узнать, где он хранится?

Для моего проекта с открытым исходным кодом я написал небольшой сценарий bash для автоматизации некоторых операций. Скрипт лежит в основе проекта и выполняет свои задачи во всех файлах ниже. Люди имеют файлы проектов на своих компьютерах по своему любимому пути, поэтому я не могу просто жестко cd /home/nico/projects/theproject в начале скрипта. Я не хочу заставлять людей вручную cd в каталог проекта каждый раз перед выполнением. Я хотел бы, чтобы люди могли использовать ярлык Gnome для запуска скрипта. Для этого сценарий должен знать, где он хранится.

 #! /bin/bash echo I am located in $(dirname "$0") cd "$(dirname "$0")" 

Обратите внимание, что это может быть относительный путь.

 #! /bin/bash w=$(cd "$(dirname "$0")" && echo "$PWD") echo I am located in "$w" 

Чтобы построить ответ cjm, вышесказанное будет абсолютизировать путь (используя под-оболочку к cd и echo $PWD )