как добавить псевдоним / функцию в vim, которые не влияют на сборку make-файла - PullRequest
0 голосов
/ 14 сентября 2018

Я обычно добавляю несколько псевдонимов и функций bash в мой файл .bashrc. например, g для "grep -nri ...", v для vim и т. д. Однако некоторое время моя новая ОС имеет некоторые cmds, которые перезаписываются моим псевдонимом, поэтому я вижу неожиданные сбои сборки.

Есть ли способ добавить псевдоним / функцию в bashrc, который должен запускаться только в интерактивной оболочке и не должен запускаться через make-файл или другие сценарии?

Спасибо ...

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Псевдонимы и функции ярлыков не должны определяться для неинтерактивных оболочек, так как другие скрипты оболочки могут быть запутаны в ваших настройках (как вы узнали). Это также хорошо для производительности, если оболочкам, выполняющим сценарии, не нужно читать и обрабатывать все ваши настройки.

Обычно, вы делаете это через пункт охраны в конце вашего ~/.bashrc. Поставьте свои настройки после этого охранника.

# Generic settings (exports, PATH, ...) here.
# ...

case "$-" in
    *i*) ;;
    *)   return;;
esac

# Aliases and shortcut functions here
alias rm=...
grep()
{
    ...
}
0 голосов
/ 14 сентября 2018

Расширение псевдонимов bash по умолчанию отключено в неинтерактивных сеансах (например, при выполнении скрипта).

Вы где-нибудь выполняете shopt -s expand_aliases в своем .bashrc / .profile?Это позволяет расширять псевдонимы в неинтерактивных сеансах.

Чтобы быть на 100% безопасным, вы могли бы выполнить shopt -u expand_aliases перед запуском, например, скрипта make.Это сбросит флаг expand_aliases.

Другой подход - полностью прекратить использование файлов конфигурации bash при запуске неинтерактивного сеанса.Это достигается добавлением этой строки в ваш .profile или .bashrc:

[[ $- =~ i ]] && return

Код до того, как эта строка все еще выполняется в неинтерактивных сеансах.Убедитесь, что добавили пользовательские псевдонимы и функции ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...