.profileに次のようにいくつかの環境変数を定義しました。
MY_HOME="/home/my_user"
ただし、引用符を削除してファイルを再インポートしないと、変数は評価されないようです。空白がある場合は引用符が必要であると考え、エスケープが必要ない場合は単一引用符を使用してください。変数定義で一重引用符と二重引用符の重要性を明確に説明できますか?前ティックと後ティックはどうですか?
ベストアンサー1
用語について混乱していると思います。
「環境変数」は、すべての子プロセスが継承する単純なシェル変数です。
例で行ったことは、シェル変数を作成することです。エクスポート前の環境にはありません。
MY_HOME="/home/my_user"
export MY_HOME
ほとんどすべてのシェル(csh、tcshを除く)に「MY_HOME」という変数を配置します。
この特別な場合は二重引用符が重複します。効果はありません。二重引用符はサブストリングをグループ化しますが、変数置換のためにすべてのシェルを使用できるようにします。一重引用符は部分文字列をグループ化し、置換を防ぎます。例の割り当てには変数がないため、二重引用符が一重引用符として表示されることがあります。
V='some substrings grouped together' # assignment
X="Put $V to make a longer string" # substitution and then assignment
Y=`date` # run command, assign its output
Z='Put $V to make a longer string' # no substition, simple assignment
エクスポートする前に環境には何もありません。