Обновить псевдонимы и функции после определения новых псевдонимов и функций?


56

Когда я определяю новый псевдоним в .bash_aliasesфайле или новую функцию в .bashrcфайле, существует ли какая-либо команда обновления, чтобы можно было немедленно использовать новые псевдонимы или функции без закрытия терминала (в моем случае терминал xfce4 с несколькими открытыми вкладками открывает много файлов а в середине работы)?


6
Обратите внимание, что нет команды, которая сделала бы эту новую команду известной во всех ваших открытых терминалах / вкладках. Вам придется делать . .bashrcили source .bashrcв каждой открытой оболочке.
Пол Томблин

Ответы:


66

Источник измененного файла предоставит доступ к вновь записанному псевдониму или функции в текущем терминале, например:

source ~/.bashrc

Альтернативный синтаксис:

. ~/.bashrc

Обратите внимание, что если в вашем терминале запущено много экземпляров bash (вы упомянули несколько вкладок), вам придется запускать его в каждом случае.


3
sourceявляется производным от csh. Оболочка Борна есть . .bashrc.
Пол Томблин

Интересно, что это не работает, когда я определяю alias prg='prg.py'. Я должен закрыть терминал.
xralf

«вам придется запускать это в каждом случае». - Обратите внимание, что пользователи zsh могут соответствующим образом установить TMOUT и TRAPALRM в stat и (если необходимо) повторно использовать ~ / .zshrc один раз в секунду или через любой другой разумный интервал. Я не верю, что Bash может сделать это, хотя.
Кевин

6

. ~/.bashrcБудет выполнен ввод в командной строке, .bashrcи будут созданы все функции, определенные в этом файле.

.bashrcсам будет также вызывать и запускать .bash_aliases( если он существует), если в нем .bashrcесть такой код:

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

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


2

Иногда вам захочется превратить псевдоним в функцию, но при создании файла bashrc может возникнуть странная ошибка:

. ~/.bashrc
bash: /home/username/.bashrc: line 38: syntax error near unexpected token `('
bash: /home/username/.bashrc: line 38: `hello_world() {'

Это может происходить из-за того, что псевдоним совпадает с именем вновь определенной функции. Насколько я знаю, чтобы избежать этого, нужно удалить все, а затем получить файл bashrc:

bash-4.3 $
unalias -a && . $HOME/.bashrc
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.