web-dev-qa-db-ja.com

何をしますか。 .bashrcは実際に行いますか?

私が例えばを入力するとき。 .bashrcファイルへの新しいエイリアスすぐにそのターミナルウィンドウで使用することはできません。最近まで、.bashrcファイルをリロードするためにターミナルを再起動する必要があると思っていました。それから私はどこかで私が書くならそれを見つけました

. .bashrc

これにより、現在のウィンドウで.bashrcファイルが再ロードされ、再起動する必要はありません。これはひれで動作しますが、実際に何が起こっているのでしょうか?なぜこれが.bashrcファイルをリロードするのですか?

13
Spade

.はコマンドだからです。

これはシェルの組み込みコマンドであり、指定されたファイルを読み取り、現在のシェルプロセスでその中のコマンドを実行します。

Bourne Again Shellには、このコマンドの同義語としてsourceもあります。しかし、これはBashismです(Bourne Again ShellがC Shellから取得したもの)。 Bourne AgainShellがTENEXC Shell、Z Shellなどと共有しているのはBashismですが(Korn Shellは共有していません)。 Single UNIX Specificationは、.のみを標準化します。

また、./sourceの動作は、Bourne AgainShellがPOSIX互換モードで実行されているかどうかによって微妙に変化することにも注意してください。 (これも他のシェルと似ていますが、非標準の動作は互いに同じではありません。たとえば、Zシェルには、コンパイル済みのシェルスクリプトメカニズムがあり、source.とは微妙に異なります。その検索パス処理。別の例として、Korn Shellの.はシェル関数を実行します。)

~/.bashrcは、シェルの起動時に内容が(シェルプロセスの呼び出し方法に応じて)自動的に供給されるいくつかのファイルの1つにすぎません。それが手動で供給されることを禁止するものは何もありません。そのアクションがべき等でない場合でも、後で修正作業を行う必要がある場合があります。

参考文献

17
JdeBP

.コマンドは、.bashrcファイルを実行するsourceコマンドと同じです。これにより、定義したすべてのエイリアスとその他のシェル設定/変数が現在の環境に追加されます。 sourceのヘルプページから:

source: source filename [arguments]
    Execute commands from a file in the current Shell.
1
ethanwu10

help .はあなたに言うでしょう:

.: . filename [arguments]

Execute commands from a file in the current Shell.

Read and execute commands from FILENAME in the current Shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

と言って. .bashrcファイルを実行(ソース)します.bashrcこれにより、ファイルに加えられた変更が現在のセッションで使用可能になります。

デフォルトでは、~/.bashrcはログイン時に読み取られます。

.sourceの同義語です。

1
devnull