「var=value エクスポート」が機能しない場所はどこですか?

「var=value エクスポート」が機能しない場所はどこですか?

私はおそらく1990年代半ば(!)にこの構造を見つけました。

export var=value

Bashismで、ポータブル表現は次のとおりです。

var=value
export var

私は長年これを擁護してきましたが、最近誰かが私に挑戦し、文字通りかつて私の強い信仰を裏付ける文書を見つけることができませんでした。

Google検索"export: command not found"誰かが実際にこの問題を経験した事例はないようですので、それが実際といってもあまり一般的ではないと思います。

(私が受け取ったクリックは、初心者が句読点をコピー/貼り付けたために発生したようです。'export: command not foundまたは、類似またはBourneシェル構文を使用したい初心者ユーザーとexport一緒に使用しようとしています。 )sudocsh

OS Xshdash

sh$ export var=value
sh$ echo "$var"
value
sh$ sh -c 'echo "$var"'  # see that it really is exported
value

今日の世界でexport var=value使っても安全だと言えますか?

結果が何であるかを理解したいと思います。 v7 "Bourne classic"に移植されていない場合、それはただの不思議なことに過ぎません。これは、本番システムでシェルが実際にこの構文を処理できないことを確認するのに役立ちます。

ベストアンサー1

bashismではなく、POSIX互換の構文です。これは実際にずっと前にkshismで始まり、その後Bourne構文に基づいてほぼすべてのシェルで採用されました。唯一の悪名高い例外は、/bin/sh以前のBourneシェル構文に固執するSolaris 10以前のバージョンです。 Solaris 11はPOSIX互換シェルを/bin/sh

ちなみに、exportBourneシェルの以前のバージョンにはすでに組み込みコマンドがあるので、インターネット検索は誤解を招く可能性がexport: command not foundあります。

export以下は、割り当てとともに使用した場合のレガシーBourneシェルの動作です。

$ export var=22
var=22: is not an identifier

香水を呼び起こす人のために、オリジナルBourneシェルのソースコードほとんどのUnixとLinuxのディストリビューションで利用可能でコンパイルされています。

おすすめ記事