3

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

Я извиняюсь, что на самом деле хотел написать .bash_login

4 ответа4

5

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

2

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

1

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

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

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

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

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

РЕДАКТИРОВАТЬ: На самом деле это немного сложнее, чем это. Мое решение будет работать, но это стоит прочитать .bash_profile vs .bashrc

PS Перезагрузка редко необходима, чтобы исправить проблему в системе * nix. Выйти и войти максимум.

0

Если вы пытаетесь облегчить изменение каталогов, посмотрите на $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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .