Оновити псевдоніми та функції після визначення нових псевдонімів та функцій?


55

Коли я визначаю новий псевдонім у .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 один раз на секунду або на будь-який інший розумний інтервал. Я не вірю, що Баш може це зробити.
Кевін

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.