Вопрос: Любой способ избежать точечного слэша при запуске исполняемых скриптов в bash?


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

chmod +x myscript

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

./myscript

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

myscript

???


4
2017-07-24 20:21


Источник


Какую ОС (дистрибутив) вы используете? - ctrl-alt-delor


Ответы:


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

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


4
2017-10-18 11:20



Я мог бы предложить положить «.» в конце, а не в начале, PATH. По крайней мере, это помогло бы с коллизиями имен. Приветствия. - pythonlarry


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

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

4
2017-07-24 20:28





export PATH=/path_to_folder_containing_executable/:$PATH

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

Удачи!


1
2017-07-24 22:31





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

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

1
2017-07-25 04:54





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

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

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

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

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


0
2017-07-24 21:11



Причина, по которой программа в вашей PATH называется test не работает, потому что test это также имя встроенной оболочки. - garyjohn
@garyjohn да, вы понимаете, почему это может быть проблемой. - ctrl-alt-delor


Все остальные ответы, опубликованные до того, как они верны. (Несмотря на то что те, которые не упоминают ~/.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,


0
2017-07-25 04:11