Odśwież aliasy i funkcje po zdefiniowaniu nowych aliasów i funkcji?


55

Kiedy definiuję nowy alias w .bash_aliasespliku lub nową funkcję w .bashrcpliku, czy jest jakieś polecenie odświeżające, aby móc natychmiast użyć nowych aliasów lub funkcji bez zamykania terminala (w moim przypadku xfce4-terminal z kilkoma otwartymi kartami, wiele plików otwartych i w środku pracy)?


6
Zauważ, że nie ma polecenia, które ujawniłoby to nowe polecenie we wszystkich twoich otwartych terminalach / kartach. Będziesz musiał wykonać . .bashrclub source .bashrcw każdej otwartej powłoce.
Paul Tomblin,

Odpowiedzi:


66

Pozyskanie zmienionego pliku zapewni dostęp do nowo zapisanego aliasu lub funkcji w bieżącym terminalu, na przykład:

source ~/.bashrc

Alternatywna składnia:

. ~/.bashrc

Zauważ, że jeśli masz wiele instancji bash działających w twoim terminalu (wspomniałeś wiele kart), będziesz musiał uruchomić to za każdym razem.


3
sourcepochodzi od csh. Sposób Bourne Shell jest . .bashrc.
Paul Tomblin,

To interesujące, że to nie działa, gdy definiuję alias prg='prg.py'. Muszę zamknąć terminal.
xralf,

„będziesz musiał uruchomić to w każdym przypadku”. - Należy pamiętać, że użytkownicy zsh mogą odpowiednio ustawić TMOUT i TRAPALRM na stat i (jeśli to konieczne) ponownie ~ ~ .zshrc raz na sekundę lub w dowolnym innym rozsądnym odstępie czasu. Nie wierzę jednak, że bash może to zrobić.
Kevin,

6

. ~/.bashrcUruchomi się pisanie w wierszu poleceń, .bashrca więc zostaną utworzone wszystkie funkcje zdefiniowane w tym pliku.

.bashrcwtedy sam również wywoła i uruchomi .bash_aliases( jeśli istnieje), jeśli .bashrcma w nim ten kod:

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

podczas gdy używanie . ~/.bash_aliasessamego (na przykład z wiersza poleceń) po prostu spróbuje uruchomić .bash_aliasesbez udziału .bashrc i da błąd, jeśli plik nie istnieje (stąd test sprawdzania pliku, gdy jest w środku .bashrc).


2

Czasami będziesz chciał przekształcić alias w funkcję, ale gdy źródłowy plik bashrc, może wystąpić dziwny błąd:

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

Może się tak zdarzyć, ponieważ nazwa aliasu koliduje z nazwą nowo zdefiniowanej funkcji. O ile wiem, aby tego uniknąć, trzeba wszystko zdekasować, a następnie pobrać plik bashrc:

bash-4.3 $
unalias -a && . $HOME/.bashrc
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.