Aggiorna alias e funzioni dopo aver definito nuovi alias e funzioni?


56

Quando definisco un nuovo alias nel .bash_aliasesfile o una nuova funzione nel .bashrcfile, c'è qualche comando di aggiornamento per poter usare immediatamente i nuovi alias o funzioni senza chiudere il terminale (nel mio caso xfce4-terminal con alcune schede aperte, molti file aperti e nel mezzo del lavoro)?


6
Si noti che non esiste alcun comando che renderà noto quel nuovo comando in tutti i terminali / schede aperti. Dovrai fare il . .bashrco source .bashrcin ogni shell che hai aperto.
Paul Tomblin,

Risposte:


66

Il sourcing del file modificato fornirà l'accesso all'alias o alla funzione appena scritti nel terminale corrente, ad esempio:

source ~/.bashrc

Una sintassi alternativa:

. ~/.bashrc

Nota che se hai molte istanze di bash in esecuzione nel tuo terminale (hai menzionato più schede), dovrai eseguirlo in ogni istanza.


3
sourceè derivato da csh. Il modo bourne shell è . .bashrc.
Paul Tomblin,

È interessante che questo non funzioni quando lo definisco alias prg='prg.py'. Devo chiudere il terminale.
xralf,

"dovrai eseguirlo in ogni caso." - Si noti che gli utenti di zsh possono impostare TMOUT e TRAPALRM in modo appropriato su stat e (se necessario) re-source ~ / .zshrc una volta al secondo, o a qualsiasi altro intervallo ragionevole. Non credo che Bash possa farlo, però.
Kevin,

6

Digitando . ~/.bashrcdalla riga di comando verrà eseguito .bashrce quindi verranno create tutte le funzioni definite in quel file.

.bashrcstesso chiamerà ed eseguirà .bash_aliases( se esiste) se .bashrcha questo codice:

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

mentre l'utilizzo . ~/.bash_aliasesda solo (ad esempio dalla riga di comando) proverà ad essere eseguito .bash_aliasessenza coinvolgere .bashrc e genererà un errore se il file non esiste (quindi il test di verifica del file quando è in .bashrc).


2

A volte vorrai trasformare un alias in una funzione, ma quando si genera il file bashrc, potrebbe verificarsi uno strano errore:

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

Ciò può accadere perché il nome alias si scontrano con il nome della funzione appena definita. Per quanto ne so, per evitare questo è necessario unire tutto, quindi procurarsi il file bashrc:

bash-4.3 $
unalias -a && . $HOME/.bashrc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.