新しいエイリアスと関数を定義した後、エイリアスと関数を更新しますか?


55

.bash_aliasesファイルに新しいエイリアスまたはファイルに新しい関数を定義するとき.bashrc、ターミナルを閉じることなく新しいエイリアスまたは関数をすぐに使用できるリフレッシュコマンドがあります(私の場合、いくつかのタブが開いているxfce4-terminal、多くのファイルが開いていますそして仕事の途中で)?


6
開いているすべての端末/タブで新しいコマンドを認識させるコマンドはないことに注意してください。あなたは行う必要があるでしょう. .bashrcsource .bashrc、開いているすべてのシェルで。
ポールトムブリン

回答:


66

変更されたファイルを入手すると、現在の端末で新しく書き込まれたエイリアスまたは関数にアクセスできます。次に例を示します。

source ~/.bashrc

代替構文:

. ~/.bashrc

ターミナルで実行中のbashのインスタンスが多数ある場合(複数のタブについて言及した場合)、すべてのインスタンスでこれを実行する必要があることに注意してください。


3
sourcecshから派生しています。ボーンシェルの方法は. .bashrcです。
ポールトムブリン

私が定義するときにこれが機能しないことは興味深いことalias prg='prg.py'です。ターミナルを閉じなければなりません。
xralf

「すべてのインスタンスでこれを実行する必要があります。」-zshユーザーは、TMOUTおよびTRAPALRMを適切に設定して、statおよび(必要な場合)〜/ .zshrcを1秒間に1回、またはその他の適切な間隔で再ソースできることに注意してください。ただし、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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.