Я установил псевдонимы в /etc/profile.d/alias.sh для каждой оболочки входа в систему. Но если я запускаю script.sh, я не могу использовать этот псевдоним. Как я могу установить псевдоним даже для подоболочек или дочерних процессов?
/etc/profile.d/alias.sh
alias rmvr='rm -rv';
alias cprv='cp -rv';
alias mvrv='mv -rv';
()
alias foo='echo foobar'
, enter,(foo)
outputfoobar
.Это потому, что /etc/profile.d/ используется только интерактивной оболочкой входа в систему. Тем не менее,
/etc/bash.bashrc
используется интерактивная оболочка без входа в систему.Поскольку я обычно устанавливаю некоторые глобальные псевдонимы для системы, я начал создавать,
/etc/bashrc.d
где я могу удалить файл с некоторыми глобальными псевдонимами:источник
Если вы хотите, чтобы они были унаследованы от вложенных оболочек, используйте вместо них функции. Они могут быть экспортированы в environment (
export -f
), и тогда в подоболочках эти функции будут определены.Итак, для одного из ваших примеров:
Если у вас их несколько, то сначала установите для экспорта:
источник
Подобный вопрос, я хотел запустить bash "командный режим" и иметь псевдонимы:
bash -i 'alias'
ничего не делает. Но я обнаружил флаг -i, который запускает интерактивные настройки, так что этоbash -ci 'alias'
работает.По вашему вопросу, кажется, вы можете обойти его путем "поиска" файла, например:
Тогда псевдонимы работают. FWIW ...
источник