私の.bashrcには次の権限があります。 -rwXアール字形Xアール字形X
そのため、「実行可能」と表示されます。だから私はそれを実行できるはずです。
しかし、私が試したとき
$ ./.bashrc
私は得る:
./.bashrc: line 6: return: can only `return' from a function or sourced script
.bashrcの5行と6行:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
私はこの問題を検索し、次の "source"コマンドが私が必要とするものを完全に実行します。
$ source .bashrc
質問:
1-./.bashrcを直接実行できない理由とこの行の機能:
[ -z "$PS1" ] && return
2-「ソーススクリプト」とは何ですか?「ソース」コマンドの具体的な役割は何ですか?(私のシステムには「source」のマニュアルページはありません)
答え1
source
ドットスクリプトを取得するための使用(または標準コマンドである使用)とそれを独自のスクリプトとして実行することの.
違いは、以前に議論されました。
たとえば、ソース("."または"source")とbashでのファイル実行の違いは何ですか?source
「これは最終的に別の環境(またはなし.
)でスクリプトを実行することです。現在のシェル環境、現在のシェルの環境変数、シェルオプションなどを設定する必要がある場合は、これを行う必要があります。シェルオプションを設定したり、スクリプトから変数をエクスポートしたり(使用したりsource
実行したりしないで.
)、親シェルには影響しません。
ご質問いただいた具体的な試験は、
[ -z "$PS1" ] && return
$PS1
デフォルトのプロンプトが空の場合、ドットスクリプトから返されます。これは、現在のシェルセッションが対話型かどうかをテストする方法です。対話型でない場合、PS1
変数は設定されず、プロンプトは空です。この場合、スクリプトの残りの部分(おそらく)は対話型で初期化する必要がある項目のみを処理するため、実行する必要はありません。シェル。
現在のシェルセッションを終了するには、asのreturn
代わりにドットスクリプトを使用する必要があります。これは、またはを使用してスクリプトを呼び出したセッションと同じです。したがって、ドットスクリプトはシェル関数と非常によく似ています。exit
exit
source
.