Почему настройка псевдонима в .profile не работает?

Это последняя строка в моем .profile:

alias gl="cd /home/jrenner/glances/glances"

, но даже после перезагрузки я получаю команду, не найденную при наборе gl. Что происходит? Я вошел как правильный пользователь.

9
задан 26 March 2013 в 06:56

5 ответов

Есть две связанные причины, по которым псевдонимы не всегда работают, если они помещены в файл .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, что является очень распространенной практикой.

0
ответ дан 26 March 2013 в 06:56

Я почти уверен, что идея lpanebr сработает, но вот более элегантное решение. Выполните эту команду псевдонима в .bashrc. Вот как я это делаю, или некоторые люди предпочитают добавить файл, посвященный псевдониму. Назовите его .alias или как-нибудь еще и добавьте .alias к вашему .bashrc

Хотел бы я сделать форматирование как @lpanelbr. Интересно, есть ли вики?

0
ответ дан 26 March 2013 в 06:56

Если вы используете bash (echo $SHELL) в качестве интерпретатора оболочки, я думаю, что будет лучше (или, возможно, единственным способом), если вы определите свою собственную функцию CD.

Отредактируйте файл .bashrc и добавьте в конце следующее:

# my custom functions:
function gl () {
   cd /home/jrenner/glances/glances/
}

Вы также можете расширить его следующим образом:

# my custom functions:
function cdw () {
   cd /home/jrenner/glances/glances/$1
   ls
}

и перейти непосредственно в подкаталог. и перечислите его содержимое.

0
ответ дан 26 March 2013 в 06:56
$ bash #start a new bash instance

Это было проблемой с моим сервером. Простой source .profile не работал по некоторым причинам

0
ответ дан 14 October 2019 в 15:47

Правильный способ сделать это в Ubuntu - добавить свой псевдоним в ~ / .bash_aliases . Создайте файл, если он не существует.

Этот файл (если он есть) вызывается по умолчанию ~ / .bashrc , и псевдоним будет доступен и в ваших эмуляторах терминала.

2
ответ дан 14 April 2020 в 15:11

Другие вопросы по тегам:

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