Я хотел записать некоторые сценарии и сделать, чтобы MacVim назвал некоторые команды удара. У меня есть некоторые псевдонимы и требуемая энергия, чтобы смочь назвать их, таким образом, я знал, что мне была нужна оболочка входа в систему, просто не знал, как заставить энергию использовать того.
Я считал это: https://stackoverflow.com/questions/4642822/vim-is-not-obeying-command-aliases (который не работал на моего MacVim); и это: https://stackoverflow.com/questions/4642822/vim-is-not-obeying-command-aliases, который походил на хорошую идею.
Таким образом, я открыл свой .vimrc и вставил это: set shell=/bin/bash\ -l
.
Теперь что-то очень странное происходит: у Меня есть псевдоним в моем .bash_profile
, как так:
alias mytest='echo "TEST!!"'
Мой .bashrc
источники .bash_profile
, таким образом, я знаю, что это не должен быть вопрос того, где псевдоним установлен. Если я вхожу в энергию и работаю: :! alias mytest
Я вижу это:
alias mytest='echo "TEST!!"'
Press ENTER or type command to continue
Если я работаю :! mytest
, Тем не менее, это - то, что я получаю:
/bin/bash: mytest: command not found
shell returned 127
Press ENTER or type command to continue
Таким образом, я - все из идей о том, как это может происходить. Каким образом, когда я выполняю "псевдоним", псевдоним там, но когда я выполняю сам псевдоним, удар не распознает его?
Я ценю любое понимание, которое любой может дать мне по этому вопросу.
Спасибо.
ОБНОВЛЕНИЕ:
Я теперь пытался изменить мой .vimrc
строка к:
set shell=/bin/bash\ -li
Для создания оболочки интерактивной, а также бывшей оболочкой входа в систему, и она работала.
Таким образом, я изменяю свой вопрос немного: Почему это имеет смысл? Насколько я понимаю оболочка входа в систему выполняет мой .bash_profile
, и таким образом загружает мои псевдонимы. Почему это не достаточно?
Псевдонимы предназначаются как пользовательская стенография, таким образом, они только действительно имеют смысл в интерактивных оболочках. Поэтому, поскольку в странице справочника удара говорится: "Псевдонимы не расширены, когда оболочка не интерактивная, если опция оболочки expand_aliases не установлена с помощью shopt (см. описание shopt под SHELL ВСТРОЕННЫЕ КОМАНДЫ ниже)". Я предполагаю, что Вы могли добавить shopt -s expand_aliases
к Вашему .bash_profile, но это могло бы вызвать неожиданное поведение в других видах неинтерактивных оболочек...