を実行した後、set -a var=99
出力で次の文を見つけることができますset
。
...
TERM=xterm
UID=0
USER=root
VIRTUAL_ENV_DISABLE_PROMPT=1
_=var=99
colors=/etc/DIR_COLORS
...
誰でも「_=」が何を意味するのか教えてもらえますか?
私はこれがecho $var
役に立たないことに気づきました。を実行すると、set -a
このset
変数は再び含まれません。何が問題なの?
ベストアンサー1
下線は実際には特殊なシェル変数です。ここに表示されるのは、値が_
.var=99
の underscore() 変数です。読み取り専用で、シェルで維持されます。これは:
- 実行中のシェルまたは引数のリストに渡されたスクリプトの絶対ファイル名を含む、シェルの起動時に設定されます。
- それ以降は、拡張後に前のコマンドの最後の引数に展開されます。
- メールを確認すると、このパラメーターにはメールファイルの名前が保持されます。
- また、実行された各コマンドのフルパス名に設定され、そのコマンドとしてエクスポートされた環境に配置されます。
あなたの例は2番目のカテゴリに属します。入力した内容は次のとおりです。
set -a var=99
だから最後の主張var=99
は値設定中です(var
に設定されていません99
)。とにかく_
そう決まっています。報告される内容は次のとおりです。
_=var=99
少し混乱していますが、最初は=
変数への割り当てを表し、_
2番目は値の一部を表します。
-a
このオプションのset
結果は次のとおりです。後で定義されるすべての変数輸出を待っています。