MacVim, ведущий себя странно с моими псевдонимами (даже устанавливающий оболочку =/bin/bash\-l)

Я хотел записать некоторые сценарии и сделать, чтобы 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, и таким образом загружает мои псевдонимы. Почему это не достаточно?

0
задан 23.05.2017, 15:41

2 ответа

Псевдонимы предназначаются как пользовательская стенография, таким образом, они только действительно имеют смысл в интерактивных оболочках. Поэтому, поскольку в странице справочника удара говорится: "Псевдонимы не расширены, когда оболочка не интерактивная, если опция оболочки expand_aliases не установлена с помощью shopt (см. описание shopt под SHELL ВСТРОЕННЫЕ КОМАНДЫ ниже)". Я предполагаю, что Вы могли добавить shopt -s expand_aliases к Вашему .bash_profile, но это могло бы вызвать неожиданное поведение в других видах неинтерактивных оболочек...

2
ответ дан 24.11.2019, 06:42

Это должно работать: :! bash -ic 'mytest; exit'

0
ответ дан 24.11.2019, 06:42

Теги

Похожие вопросы