Есть две связанные причины, по которым псевдонимы не всегда работают, когда помещаются в .profile
файл. Во-первых, файл .profile
(или .bash_profile
) запускается только для оболочки входа в систему. Если вы запускаете bash в окне терминала под X, ваш эмулятор терминала (например, gnome-termanl), вероятно, не запускает bash в качестве оболочки входа в систему. [У большинства есть возможность изменить это, если вы хотите, но по умолчанию (для gnome-termal в любом случае) это не запускать его как оболочку входа в систему.]
Оболочка будет интерактивной и поэтому .bashrc
будет запущена.
Однако, как правило, bash запускался как оболочка для входа в систему при запуске X-сессии. Таким образом, если в .profile
команде есть псевдонимы, они будут выполняться вместе с настройкой переменных среды, таких как PATH и т. Д. Когда открывается окно терминала, запускается новый экземпляр bash для запроса и выполнения команд в этом окне терминала. В отличие от переменных среды, псевдонимы нельзя экспортировать из одного экземпляра bash в новый, запущенный им. Таким образом, псевдонимы не передаются новой оболочке.
Чтобы увидеть это, попробуйте этот эксперимент:
export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash #start a new bash instance
echo $ROBERT
alias james
exit #end the new bash instance and revert to the original one
echo $ROBERT
alias james
Обратите внимание, что .bashrc
bash не запускается при запуске в качестве оболочки входа в систему. Таким образом, размещение ваших псевдонимов не всегда будет работать, если вы .bashrc
не получены от вас .profile
, что является очень распространенной практикой.
gl
? Терминал? GUI?