У меня есть папка с кучей sh-файлов. Например, "server-run.sh", "server-stop.sh", "server-do-something.sh". И я хочу запустить файл "server-stop.sh" из любого места. Я мог бы добавить эту папку bin в путь, но файлы «run» и «do -thing» также будут доступны, и я не хочу загрязнять свою консоль. Также я не хочу добавлять этот файл в папку / bin, потому что он может измениться. Может быть, ссылка. Могу ли я как-то добавить только «server-stop.sh» к пути?
Лучший способ состоит в том, чтобы добавить символьную ссылку в этот файл в /usr/local/bin
каталог:
cd /usr/local/bin
ln -s server-stop.sh /path/to/your/folder/server-stop.sh
В этом случае, Вы добавляете ссылку в исходный файл, таким образом, можно всегда изменять исходный файл, и Вы управляете, будет всегда работать.
Создание связывается в /usr/bin
работы, но если Вы не хотите, чтобы сценарии были доступны всем пользователям, я предпочел бы создавать ссылки в ~/bin
, с тем же результатом, но не касанием глобальной системы. Кроме того, OP не упомянул, где сценарии хранятся. создание ссылки глобально, в то время как сценарии хранятся локально, является плохой практикой, так в целом я предложил бы:
~/bin
. ~/bin
(ln-sf). Или с или без расширения языка, сценарий работал бы отлично. Однако существуют некоторые аргументы для использования сценария без расширения языка:
Я использовал бы bash
встроенная команда hash
для запоминания местоположения server-stop.sh
сценарий:
hash -p /path/to/folder/server-stop.sh server-stop
Просто добавляют вышеупомянутую строку к Вашему .bashrc
файл. Можно теперь использовать server-stop
везде в Вашем bash
оболочка/сценарии.
См. help hash
:
hash: hash [-lr] [-p pathname] [-dt] [name ...]
Remember or display program locations.
Determine and remember the full pathname of each command NAME. If
no arguments are given, information about remembered commands is displayed.
Options:
-d forget the remembered location of each NAME
-l display in a format that may be reused as input
-p pathname use PATHNAME is the full pathname of NAME
-r forget all remembered locations
-t print the remembered location of each NAME, preceding
each location with the corresponding NAME if multiple
NAMEs are given
Arguments:
NAME Each NAME is searched for in $PATH and added to the list
of remembered commands.
Возможно, псевдоним - то, что Вы ищете. Откройте Ваш ~/.bash_aliases
файл и добавляет следующее в конец файла (файл может быть пустым в зависимости от того, добавили ли Вы псевдоним ранее):
alias server-stop.sh='/path/to/your/server-stop.sh`
Профессионалы:
Это только добавит server-stop.sh
поскольку Вы намереваетесь
Это не изменит Ваш $PATH
переменная
Другие пользователи Вашей системы незатронуты
Недостатки:
Необходимо будет изменить псевдоним, после того как Вы изменяете путь где server-stop.sh
расположен (я не думаю, что это будет требоваться очень часто),
Это будет работать только на оболочку удара, необходимо будет видеть то, что другие оболочки используют для псевдонима.