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


13

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

. .bashrc

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


1
.あなたの「ソース」ファイル。意味それは基本的に実行されている
Der Hochstapler

可能性のある重複したソースが何んか?
ダンD.

1
@DanD。答えは同じですが、質問は私には非常に明確に聞こえます。
カリモ

1
@Dan D.この質問はの意味についての詳細です。今まで私はいつも考えていました現在のディレクトリの略記として、..親ディレクトリの略記として。気づかなかったはソースのエイリアスでした(これは私にとってまったく新しい概念でした)。誰かがここに来て、見つけた違いを知りたい場合bashスクリプトの実行とbashスクリプトのソースの違いは何ですか?非常に役立つこと。
スペード

回答:


17

なぜなら.コマンドだからです。

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

Bourne Againシェルにはsource、このコマンドの同義語もあります。しかし、これはBashism(Bourne AgainシェルがCシェルから取ったもの)です。Bourne AgainシェルがTENEX Cシェル、Zシェルなどと共有するのはバシズムですが(Kornシェルではありません)。Single UNIX Specificationは標準化のみを行います.

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

~/.bashrcは、シェルの起動時に自動的にソースとなる(シェルプロセスの起動方法に依存する)いくつかのファイルの1つにすぎません。手動での調達を禁止するものはありません。そのアクションがi等でない場合は、後で修正作業が必要になる場合があります。

参考文献


1

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

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

source: source filename [arguments]
    Execute commands from a file in the current shell.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.