Команды, доступные в bash -i не могут получить доступ в bash -l - PullRequest
3 голосов
/ 15 марта 2012

Я не знаю, как это описать. Это просто происходит, когда я использую vim и set shell=bash -l. Затем я обнаружил, что команда с именем mm, которая может выполняться в терминале, не может выполняться в vim.

И я также обнаружил, что когда я пишу эту команду в run.sh и выполняю этот скрипт. Это все еще сообщают command not found. Я думаю, что-то не так с моими $HOME/.bash* файлами и $HOME/.profile. И я уверен, что .profile почти совпадают с .bashrc.

1 Ответ

5 голосов
/ 15 марта 2012

С $ man bash:

Когда bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, она сначала читает и выполняет команды из файла/ etc / profile, если этот файл существует.После прочтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а читает и выполняет команды из первой существующей и доступной для чтения.

и

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

Итак:

shell   | files loaded    
--------+-----------------
bash -l | /etc/profile    
        | ~/.bash_profile 
        | ~/.bash_login
        | ~/.profile     
--------+-----------------
bash -i | ~/.bashrc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...