Segarkan alias dan fungsi setelah mendefinisikan alias dan fungsi baru?

56

Ketika saya mendefinisikan alias baru di .bash_aliasesfile atau fungsi baru di .bashrcfile, apakah ada perintah refresh untuk dapat langsung menggunakan alias atau fungsi baru tanpa menutup terminal (dalam kasus saya terminal xfce4 dengan beberapa tab terbuka, banyak file terbuka dan di tengah pekerjaan)?

xralf
sumber
6
Perhatikan bahwa tidak ada perintah yang akan membuat perintah baru itu diketahui di semua terminal / tab terbuka Anda. Anda harus melakukan . .bashrcatau source .bashrcdi setiap shell yang Anda buka.
Paul Tomblin

Jawaban:

66

Sumber file yang diubah akan memberikan akses ke alias atau fungsi yang baru ditulis di terminal saat ini, misalnya:

source ~/.bashrc

Sintaks alternatif:

. ~/.bashrc

Perhatikan bahwa jika Anda memiliki banyak instance bash yang berjalan di terminal Anda (Anda menyebutkan beberapa tab), Anda harus menjalankan ini di setiap instance.

jasonwryan
sumber
3
sourcediturunkan dari csh. Cara shell bourne adalah . .bashrc.
Paul Tomblin
Sangat menarik bahwa ini tidak berfungsi ketika saya mendefinisikan alias prg='prg.py'. Saya harus menutup terminal.
xralf
"Kamu harus menjalankan ini dalam setiap contoh." - Perhatikan bahwa pengguna zsh dapat mengatur TMOUT dan TRAPALRM dengan tepat ke stat dan (jika perlu) sumber ulang ~ / .zshrc sekali per detik, atau pada interval yang masuk akal lainnya. Tapi saya tidak percaya bash bisa melakukan ini.
Kevin
6

Mengetik . ~/.bashrcdi baris perintah akan berjalan .bashrcdan fungsi apa pun yang didefinisikan dalam file itu akan dibuat.

.bashrcsendiri kemudian juga akan memanggil dan menjalankan .bash_aliases( jika ada) jika .bashrcmemiliki kode ini di dalamnya:

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

sedangkan menggunakan . ~/.bash_aliasessendiri (pada baris perintah misalnya) hanya akan mencoba dan menjalankan .bash_aliasestanpa melibatkan .bashrc.

Michael Durrant
sumber
2

Kadang-kadang Anda ingin mengubah alias menjadi fungsi, tetapi ketika Anda sumber file bashrc, kesalahan aneh mungkin terjadi:

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

Ini mungkin terjadi karena nama alias berbenturan dengan nama fungsi yang baru didefinisikan. Sejauh yang saya tahu, untuk menghindari ini perlu unalias segalanya, lalu sumber file bashrc:

bash-4.3 $
unalias -a && . $HOME/.bashrc
Samuel
sumber