Я добавил несколько команд 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