почему псевдонимы, определенные в файле .bashrc, не работают?

12

Я дал псевдонимы в файле .bashrc, как показано ниже. Но псевдонимы не работают. Почему?

alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'

export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.    
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.
Venkatesh
источник
2
Вы говорите, что получаете переменные окружения, но не псевдонимы, или вы ничего не получаете?
Пол
1
Может быть, это отдельная проблема, но вы стираете свой путь. Вы должны ссылаться на ваш старый PATH в любой ситуации, напримерexport PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
Rich Homolka

Ответы:

29

Вы поставили свой .bashrcфайл после того, как изменили его? Пытаться:

. ~/.bashrc

Тогда ваша оболочка должна увидеть изменения. Кроме того, вы можете завершить и перезапустить вашу оболочку.

п.с.

Когда вы запускаете из скрипта, загрузите эту первую ссылку

shopt -s expand_aliases
Fran
источник
2
Это решило мою проблему! До этого я даже пытался выйти из системы и снова через SSH, но ничего не произошло. Псевдоним все еще не был доступен. Похоже, я должен делать это каждый раз, когда я делаю SSH! Вы знаете, почему это происходит?
Владимир Деспотович
Я не рекомендую повторный запуск .bashrc. Это может привести к дублированию и разбуханию значений. Почему бы не выйти и запустить новую оболочку? Он загрузит обновленный .bashrcфайл.
Алик Эльзин-килака
2

Это может произойти из-за того, что ваш PATH не был правильно настроен для использования всех псевдонимов, на которые ссылается псевдоним, абсолютный путь. Т.е. ls существует в / bin / ls.

Можете ли вы попробовать, используя "export PATH = $ PATH: $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin :." или что-то вроде "export PATH = $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin: / bin: / sbin /: / usr / sbin

если нет, то используйте «which», чтобы найти каталог пути для отдельных двоичных файлов с псевдонимом ref (какая история).

Сивакумар Маникам
источник
1

Вопросы для себя:

  • ~ / .Bashrc уже выполнен в вашей оболочке. Он запускается только при запуске оболочки. Если вы открываете новую оболочку (выполняете bash), она должна быть. При себе aliasвы должны увидеть все ваши псевдонимы напечатаны.
  • Второе, что нужно спросить: доступны ли программы в ваших псевдонимах. По крайней мере, h (история псевдонимов) определенно должен работать, потому что он встроен.
Фра Ороло
источник
1

Возможно, вы пытаетесь определить свои псевдонимы .bashrc, которые уже являются глобальными.

Обычно ваши псевдонимы .bashrcопределяются перед /etc/bashrcвызовом. Попробуйте определить их после .

Вот пример вашего .bashrc:

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'

export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.    
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.
Марио Таддеи
источник
Потрясающий ответ! Я вижу это постоянно в AWS Linux AMI's
rainabba
1

На всякий случай, если какие-либо пользователи MacOS ищут этот ответ, я пробовал это на своем MacBook, и даже перезапуск Терминала не загружал бы новые определения псевдонимов. Единственный способ заставить его работать - source ~/.bashrcкаждый раз. Затем я попытался перенести мои определения псевдонимов в, ~/.bash_profileи вот что сработало.

Mig82
источник