web-dev-qa-db-ja.com

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

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

58
xralf

変更されたファイルをソーシングすると、現在のターミナルで新しく書き込まれたエイリアスまたは関数にアクセスできます。次に例を示します。

source ~/.bashrc

代替構文:

. ~/.bashrc

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

68
jasonwryan

コマンドラインで. ~/.bashrcと入力すると.bashrcが実行され、そのファイルで定義されている関数が作成されます。

次に、.bashrc自体も、.bash_aliasesに次のコードが含まれている場合、.bashrcif存在する場合)を呼び出して実行します。

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

一方、. ~/.bash_aliasesを単独で(たとえばコマンドラインで)使用すると、.bashrcを使用せずに.bash_aliasesを実行しようとするだけで、ファイルが存在しない場合はエラーが発生します(そのため、 .bashrc)。

6
Michael Durrant

エイリアスを関数にしたい場合がありますが、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
2
Samuel