Добавить в путь только sh файл, а не каталог

У меня есть папка с кучей sh-файлов. Например, "server-run.sh", "server-stop.sh", "server-do-something.sh". И я хочу запустить файл "server-stop.sh" из любого места. Я мог бы добавить эту папку bin в путь, но файлы «run» и «do -thing» также будут доступны, и я не хочу загрязнять свою консоль. Также я не хочу добавлять этот файл в папку / bin, потому что он может измениться. Может быть, ссылка. Могу ли я как-то добавить только «server-stop.sh» к пути?

3
задан 21 April 2014 в 12:23

4 ответа

Лучший способ состоит в том, чтобы добавить символьную ссылку в этот файл в /usr/local/bin каталог:

cd /usr/local/bin
ln -s server-stop.sh /path/to/your/folder/server-stop.sh

В этом случае, Вы добавляете ссылку в исходный файл, таким образом, можно всегда изменять исходный файл, и Вы управляете, будет всегда работать.

0
ответ дан 21 April 2014 в 12:23

Создание связывается в /usr/bin работы, но если Вы не хотите, чтобы сценарии были доступны всем пользователям, я предпочел бы создавать ссылки в ~/bin, с тем же результатом, но не касанием глобальной системы. Кроме того, OP не упомянул, где сценарии хранятся. создание ссылки глобально, в то время как сценарии хранятся локально, является плохой практикой, так в целом я предложил бы:

  • Создают локальный каталог ~/bin.
  • , Удаляют расширение языка из сценариев (если они не вызывают друг друга), сделайте их исполняемым файлом (см. далее ниже).
  • Создают ссылки на сценарии от ~/bin (ln-sf).
  • Выходят из системы и въезжают задним ходом.

Или с или без расширения языка, сценарий работал бы отлично. Однако существуют некоторые аргументы для использования сценария без расширения языка:

  • По причинам ясности, могло бы быть предпочтительно назвать ссылка на сценарий подобный сам сценарий . хранение расширения языка тогда было бы менее удобным при вызове сценария.
  • , Хотя немного преувеличенный в случаях написанных пользователем сценариев, согласно lintian соглашения , сценарии (или ссылки на сценарии) в значении по умолчанию searchpaths не должны иметь расширения языка. -
0
ответ дан 21 April 2014 в 12:23

Я использовал бы 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.
0
ответ дан 21 April 2014 в 12:23

Возможно, псевдоним - то, что Вы ищете. Откройте Ваш ~/.bash_aliases файл и добавляет следующее в конец файла (файл может быть пустым в зависимости от того, добавили ли Вы псевдоним ранее):

alias server-stop.sh='/path/to/your/server-stop.sh`

Профессионалы:

  • Это только добавит server-stop.sh поскольку Вы намереваетесь

  • Это не изменит Ваш $PATH переменная

  • Другие пользователи Вашей системы незатронуты

Недостатки:

  • Необходимо будет изменить псевдоним, после того как Вы изменяете путь где server-stop.sh расположен (я не думаю, что это будет требоваться очень часто),

  • Это будет работать только на оболочку удара, необходимо будет видеть то, что другие оболочки используют для псевдонима.

2
ответ дан 21 April 2014 в 12:23

Другие вопросы по тегам:

Похожие вопросы: