Псевдонимы в .bash_profile не работают

Псевдонимы в .bash_profile не работают

Я добавил несколько команд cd blah blah в качестве псевдонимов в моем .bash_login, чтобы упростить смену каталогов. Все работало нормально. Но внезапно ни один из псевдонимов там не работает. Пишет, что команда не найдена. Понятия не имею, почему вдруг это перестало работать. Есть какие-нибудь предложения? (Я перезагрузил систему)

Прошу прощения, на самом деле я хотел написать .bash_login

решение1

Псевдонимы не экспортируются. То есть, псевдоним, определенный в одной оболочке, не является частью среды, унаследованной какими-либо дочерними оболочками. Поэтому лучшее место для определения псевдонимов — ваш ~/.bashrc, а не ~/.bash_profile или ~/.profile, поскольку первый будет использоваться любой интерактивной оболочкой, а последние два — только оболочками входа.

решение2

Используйте aliasкоманду в оболочке, чтобы подтвердить, действительно ли они создаются или нет. Кроме того, вы просто используете программу Mac Terminal.app? Где-то в параметрах должна быть настройка, которую вы можете настроить для использования так называемой оболочки входа. Именно так будет получен файл .bash_profile.

решение3

Файл .bash_profile, вероятно, не читается вашей оболочкой при запуске. Во многих дистрибутивах в их .bashrc по умолчанию есть что-то вроде этого:

if [ -f ~/.bash_profile ]; then
        . ~/.bash_profile
fi

Если вы используете его только для псевдонимов, я бы рекомендовал вам назвать файл ~/.bash_aliases:

if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
fi

Все, что он делает, это проверяет, существует ли файл, и если да, выполняет команды в нем. В вашем случае, команды псевдонима. Вставьте это в ваш .bashrc, и ваши проблемы должны быть решены.

EDIT: На самом деле все немного сложнее. Мое решение будет работать, но это стоит прочитать.bash_profile против .bashrc

P.S. Перезагрузка редко требуется для исправления проблемы в *nix-системе. Максимум - выход из системы и вход в систему.

решение4

Если вы пытаетесь упростить смену каталогов, посмотрите $CDPATH:

CDPATH The search path for the cd command.  This is a colon-separated list of
       directories in  which  the shell looks for destination directories
       specified by the cd command. A sample value is ".:~:/usr".

Используя пример выше, добавьте в свой профиль следующее:

CDPATH=.:~:/usr

Тогда, независимо от того, в каком каталоге вы находитесь, вы сможете легко перейти к дочерним каталогам ~или /usr.

$ pwd
/var/log
$ cd bin
$ pwd
/usr/bin

Связанный контент