Ответ 1
Команда shopt -s expand_aliases
разрешает расширение псевдонима в неинтерактивных оболочках.
Я пытаюсь использовать псевдонимы в неинтерактивной оболочке bash. Я определил свои псевдонимы в ~/.bashrc
, и я установил переменную BASH_ENV=~/startUpFile
. Содержимое startUpFile source ~/.bashrc
.
Я вижу, что мои псевдонимы распознаются при выполнении команды alias
. Однако, если я попытаюсь использовать псевдоним, определенный в ~/.bashrc
, bash не сможет его распознать. Это дает мне неизвестную ошибку команды.
С оболочкой TCSH это довольно легко сделать, поскольку файл ~/.cshrc
всегда читается.
Любые идеи, как я могу это сделать с оболочкой bash?
Команда shopt -s expand_aliases
разрешает расширение псевдонима в неинтерактивных оболочках.
.bashrc
обрабатывается только интерактивными оболочками.
Кроме того, псевдонимы не расширяются, если оболочка не является интерактивной, если параметр expand_aliases
shell не установлен с помощью shopt
. Если, конечно, режим POSIX не вызван вызовом оболочки с именем sh
вместо bash
.
Люди, которые часто используют псевдонимы, часто отправляют свои .bashrc
в конце своего профиля, чтобы псевдонимы существовали даже для неинтерактивных оболочек. Это может быть не самый лучший способ, но это довольно часто.
Мне кажется, что в 21-м веке мы должны отказаться от сценариев оболочки в пользу полномасштабного языка, такого как Python. Это намного более предсказуемо.
Вы должны
shopt -s expand_aliases
в файле, указанном в BASH_ENV
У меня была аналогичная проблема, в конце концов, я узнал, что ~/.bashrc все, что мне нужно.
Однако в Ubuntu мне пришлось прокомментировать строку, которая перестает обрабатывать ~/.bashrc:
If not running interactively, don't do anything
[ -z "$PS1" ] && return