web-dev-qa-db-ja.com

shのソースの置き換え

環境変数を設定する必要があります。通常は、

source script.sh

しかし、今では、ブートプロセス中に自動化しており、デフォルトではsh Shellでルートがブートしているように見えます。このスクリプトをshでソースするにはどうすればよいですか?

56
vkris

ドットコマンド「.」は、Cシェル(およびBash)sourceコマンドと同等です。 POSIXで指定され( dot を参照)、BourneおよびKornシェル(およびzsh、私は信じています)でサポートされています。

. somefile

シェルは$PATHを使用してファイルを検索しますが、ファイルは読み取り可能であればよく、実行可能ファイルではありません。

以下のコメントに記載されているように、ファイルの相対パス名または絶対パス名を指定できます。スラッシュを含む名前は$PATHを使用して検索されません。そう:

. /some/where/somefile
. some/where/somefile
. ./somefile

指定された3つの異なる場所に存在する場合、すべてを使用してsomefileを見つけることができます(.ls -lに置き換えて、リストされたファイルを表示できる場合)。

世界のペンダントが団結!はい、現在のディレクトリがルートディレクトリである場合、/some/where/somefile./some/where/somefileは同じファイルを参照します-シンボリックまたはハードのリンクがなくても、同じ実際のパスを使用します(など) ../../some/where/somefile)。

80