シェルスクリプトがあり、1つの環境ファイルをエクスポートし、それ自体が2番目の環境をエクスポートし、宣言され、グローバル変数をエクスポートします。

シェルスクリプトがあり、1つの環境ファイルをエクスポートし、それ自体が2番目の環境をエクスポートし、宣言され、グローバル変数をエクスポートします。

いくつかの環境ファイルを使用する Unix シェル スクリプトがあります。環境ファイルには次の行があります:

. /export/applications/ibm6000/dte/sh/nyggmfiss.env   

nyggmfiss.envファイルを開くと、変数が表示されます

${__DTEENV}    

他の環境ファイルも確認しましたが、そのうちの1つに次のような行がありました。

export __DTEENV=${0}    

誰か $(0) が何なのか知っていますか? これは、1 つの環境ファイルをエクスポートするスクリプトから来ているのでしょうか、それとも「別の環境ファイルをエクスポートする」という環境ファイルの名前なのでしょうか?

答え1

男の強打:

 $0 is set to the name of the file

答え2

${0}#!/bin/yourshellは、(シェバン行) を最初の行としてシェル プロセスを開始した外部シェル スクリプトです。
外部シェル スクリプトがない場合 (.コマンド ラインでコマンドを入力したとき) は、${0}シェルになります。

の概念は${0}ソース化された「環境ファイル」には適用されないため、.でコマンド (ソース コマンド) を実行しても変更されません。

関連情報