4

скажем, у меня есть сценарий.

chmod +x myscript

Теперь, чтобы запустить это я иду

./myscript

Но есть ли способ, которым я мог бы просто запустить его, набрав

myscript

???

6 ответов6

5

У меня была такая же проблема, и, кажется, до сих пор нет ответа четко отвечает на вопрос.

Решением этого вопроса является добавление export PATH=.:$PATH в ваш файл .bash_profile . Это будет включать текущий каталог в путь поиска Unix, пока он ищет команду. Также целесообразно, чтобы вы были проинформированы о рисках безопасности, связанных с этим.

4

добавьте путь к каталогу, в котором находится ваш скрипт, в переменную PATH:

export PATH=$PATH:/path/to/directory
1
export PATH=/path_to_folder_containing_executable/:$PATH

Если вы не хотите запускать его каждый раз, когда открываете новый терминал, вы всегда можете добавить эту строку в ваш ~/.bashrc .

Удачи!

1

создать символическую ссылку на файл скрипта в любом /bin /, /usr /bin и т. д.

ln -s /path_to_script/myscript /usr/bin/myscript 
0

Поместите скрипт в ~/bin , каталог bin в вашем домашнем каталоге. Затем проверьте, что ~/bin добавлен в вашу PATH . Это может быть уже (хотя вам, возможно, придется выйти и снова войти).

Вы можете изменить свой PATH, чтобы включить . Но это опасно. Это может привести к проблемам с безопасностью. НАПРИМЕР

Самый очевидный. Если вы установите PATH для просмотра . первый: затем , если директория имеет исполняемый файл , файл a , что делает что - то плохое. Затем вы набираете ls Затем происходит что-то плохое.

Я могу вспомнить только удобный случай. Если вы установите PATH для просмотра . последнее: затем вы создаете программу под названием test , когда вы запускаете ее, кажется, ничего не происходит (это потому, что она запускает test с более высоким приоритетом и не имеет вывода, только код выхода). Также может быть проблема, если новое программное обеспечение установлено, это новое программное обеспечение может маскировать вашу программу (хотя это не отличается от наличия ~/bin в конце PATH).

У меня есть каталоги в моем доме: ~/bin в конце PATH и ~/bin/override в начале PATH. ~/bin/override` в основном пуст.

0

Все остальные ответы, опубликованные до этого, являются правильными.  (Хотя те, которые не упоминают ~/.bashrc являются неполными в этом отношении.)  Но, если вы предпочитаете не использовать их, вот альтернатива:

Тип:

alias myscript="/path_to_folder_containing_executable/myscript"

или же

myscript() { /path_to_folder_containing_executable/myscript "$@"; }

Второй (который называется "функция оболочки") может быть напечатан

myscript() {
        /path_to_folder_containing_executable/myscript "$@"
}

Если вы предпочитаете.  Все они определяют myscript как специальный тип команды, которая проверяется перед тем, как оболочка смотрит на $PATH .

Как и команды export в других ответах, они влияют только на текущий сеанс оболочки.  Чтобы сделать эффект постоянным, поместите команду в ~/.bashrc .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .