#linux #bash #shell
#linux #bash #оболочка
Вопрос:
Некоторое время назад я написал скрипт, который выполнял бы некоторые простые процедуры установки в Linux для людей, которым не нравится командная строка, но кажется, что они запускают скрипт из местоположения (например, root). Итак, у меня есть решение, но я пытаюсь выяснить, как указать, где находится файл.
Пример. У меня есть скрипт, который называется Install.sh в папке /root/Server/Scripts/, которая ссылается на себя, используя следующее:
SCRIPTSDIR=`pwd`
Но у меня возникли проблемы с людьми, запускающими этот скрипт из root, выполнив sh Server/Scripts/Install.sh
Как я мог бы создать SCRIPTS= что-то, что ссылается на то, где находится файл, а не на то, откуда он запускается?
Спасибо, спросите, нужна ли вам дополнительная информация!
Редактировать: все ответы были хорошими, я хотел указать, что мне нужен абсолютный путь.
Ответ №1:
Вы можете получить каталог с помощью
dirname $0
Если ваш скрипт вызывается с относительным путем, dirname также вернет относительный путь. Если вы хотите по какой-либо причине разрешить его, вы можете сделать
readlink -f `dirname $0`
Ответ №2:
Вы можете использовать:
SCRIPTDIR=$(dirname $0)
Если вам нужен абсолютный путь, попробуйте:
cd $(dirname $0)
SCRIPTDIR=$(pwd)
cd -
Ответ №3:
Вы могли бы добавить что-то вроде:
fullscriptpath=$( dirname $0 )
Комментарии:
1. ха-ха, тест рефлексов stackoverflow в лучшем виде 🙂 (3 почти идентичных ответа с интервалом в несколько секунд друг от друга).