Поэтому я попытался экспериментировать и создал alias
в .bashrc
. Однако, когда я проверяю команду, я получаю:
[rkahil@netmon3 ~]$ menu
-bash: menu: command not found
Вот что у меня в .bashrc
файле:
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
alias menu='./menuScript.sh'
alias vi='vim'
Самое смешное, что когда я создал псевдоним vi
, это сработало. Но меню нет. Я просмотрел предыдущие посты на UnixStackExchange и попытался подписаться на другие посты, но безрезультатно. У кого-нибудь еще есть предложения?
./menuScript.sh: command not found
No such file or directory
, что это не то же самое, что ошибка ОП. Тем не менее, точка остается неизменной - было бы лучше использовать абсолютный путь, если псевдоним всегда будет использоваться только из каталога, в котором онmenuScript.sh
находится.Ответы:
Вы должны попробовать с
alias menu='bash ./menuScript.sh'
. В настоящее время я не работаю на машине с Linux, поэтому не могу проверить ее сам, но она должна работать. Когда вы называете псевдоним, он не знает, что делать с путем, поэтому вы должны включитьbash
в начале.И сброс терминала помогает после внесения изменений.
источник
menuScript.sh
он не был переведенchmod
в исполняемый файл, в этом случае сообщение об ошибке было бы «Отказано в доступе». Я подозреваю, что принудительное перечитывание.bashrc
файла является ответом. ... ... ... ... ... ... PS Оболочка знает, что делать с путем так же, как если пользователь вводит./menuScript.sh
- пытаясь выполнить файл.Когда вы делаете
вы создаете псевдоним, который говорит «тот файл», но не говорит, что на самом деле делать с ним.
Тем не менее, если вы делаете
или
Вы говорите, запустите этот файл.
источник
Помните ли вы исходный файл ~ / .bashrc после внесения изменений? Потому что изменения вступают в силу в вашем файле .bashrc после перезагрузки компьютера или просто поиска файла.
источник
.bashrc
, сделайте следующее…». С другой стороны, уточняющие вопросы (например, «Вы забыли…?») Кажутся более подходящими для комментариев. Не нужно много перефразировать, чтобы этот пост казался более подходящим для ответа.source ~/.bashrc
или. ~/.bashrc
, то вы можете просто открыть еще одну оболочку. Это так просто. Перезагрузка не требуется.Причина, по которой он работал,
vim
заключается в том, что эта программа уже может вызываться без прямого пути. Вам не нужно явно говорить «Я хочу, чтобы это выполнялось как программа», потому что этоvim
уже одно. Он жестко запрограммирован в ОС, что, когда он получает командуvim
, идет и исполняет файл/usr/bin/vi
или там, где находится настоящая программа.источник
vim
имеется файл с именем available,$PATH
который может быть двоичным исполняемым файлом, исполняемым скриптом или даже символической ссылкой на другую программу. Если вы удаляете запись,vim
она перестает быть доступной для пользователей.ifvi
который живет в моем$HOME/bin
(который, случается, в моем$PATH
). Я просто использую его точно так же, как я могу запустить установленный системой двоичный файл. Это действительно не имеет значения, что это пользовательская программа.Есть две проблемы с псевдонимом
Это требует, чтобы вы находились в определенном каталоге, когда вы вызываете псевдоним. Если вы находитесь в каталоге, где
menuScript.sh
его нет, псевдоним не будет выполнен.Было бы лучше, если бы вы указали полный абсолютный путь к
menuScript.sh
скрипту при определении псевдонима, напримерили похожие.
Как уже говорили другие, еще одна причина, по которой псевдоним может потерпеть неудачу, заключается в том, что скрипт не является исполняемым или имеет недопустимую
#!
строку. Убедитесь, что скрипт выполняется си что первая строка в скрипте
или каков путь к
bash
(или любой оболочке, для которой написан скрипт) в вашей системе.источник