重複の可能性:
「。」と「ソース」として実行
私は与えられたrcファイルを再ロードするためにドットコマンド "."と "source"を使用しましたが(通常は環境変数を更新するために)これが違って好むかどうかはわかりません。 2つの違いは何ですか?
ベストアンサー1
.
Bourne および POSIX シェルコマンドsource
ですが、C-Shell コマンドです。
bash
などの一部のBourne-shell派生zsh
のほとんどの実装には、一般にエイリアスコマンドがksh
あります。ただし、若干異なる動作をする場合があります(例:zshやkshなど)。source
.
bashの場合は同じように動作しますが、POSIXモードで実行されているかどうかに応じて動作が影響を受けます.
。source
POSIXでは、.
提供された$PATH
パスに/
。
csh
'sはsource
引数をパスとして解釈し、その中にあるファイルを見つけません$PATH
。
bashは、POSIXモードではPOSIXが要求したように動作し、非.
POSIXモードではpdkshが要求するように動作します。つまり、読み取り用にファイルを開くことができず(同じ)ファイルが見つからない場合は、スクリプトを終了しません。source
source
command .
$PATH
と現在のディレクトリ提供されたパスに/
。
zsh は、現行ディレクトリーの検索.
中に POSIX の要件に従って機能します。source
最初次に$PATH
(シミュレーションでもcsh
)パラメータが含まれていない場合/
(参照)info zsh .
そしてinfo zsh source
詳細はこちら)。シェルは、ファイルが見つからない.
かsource
開かない場合、sh
POSIXモード(エミュレーション)でのみ中断されます。
AT&T ksh もsource
シェルを終了しますが、現在のディレクトリでファイルを検索しません。
全体的にBourneに似たシェル(組み込みBourneシェルなしではありませんがcommand
)で一貫した動作が必要な場合は、次のことができます。
command . /path/to/the-file-to-source || handle-error
そして、ファイルをソースに現在のディレクトリになければなりません。以下を作成します。
command . ./the-file-to-source || handle-error
POSIXを使用するsh
スクリプトでは、上記のPOSIX動作を使用できる必要があります。sh
sh
1呼び出し時にPOSIXモードを有効にzsh
します。の場合、その環境で受信された場合(bashコマンドで呼び出された場合、POSIXコマンドが呼び出されていない場合でも)、受信された場合、またはで、または後で呼び出された場合。 zshを使用すると使用できますbash
sh
bash
POSIXLY_CORRECT
bash
SHELLOPTS=posix
bash --posix
bash -o posix
set -o posix
emulate sh
シミュレーション sh
。シミュレーションは zsh の動作を変更するいくつかのオプションを変更します。この場合、オプションはですPOSIX_BUILTINS
。
Bashでは、(POSIX以外)コマンドを使用してPOSIXモードになっていることを確認できます[ -o posix ]
。 zshでは、出力を確認しemulate
て偽装していることを確認しsh
たり、[[ -o posixbuiltins ]]
特定のオプションが有効になっていることを確認できます。特定のエミュレーションモードを一時的に有効にすることもできますemulate -L
(現在のバージョンにあります)。地元の範囲のみ)。
²非対話型シェルに適用できます。対話型シェルの場合、異なるシェルが異なる動作をし、一部は失敗を無視し、一部はいくつかの構文エラーでプロンプトを返します。また、サブシェルで実行している場合は、サブシェルのみが終了します。