この変数は.bashrcに設定されていますが、なぜ値がないのですか?

この変数は.bashrcに設定されていますが、なぜ値がないのですか?

これを追加すると:

hi=11
export hi

.bashrc に送信し、このユーザーに次を送信します。

su - bela

それから私は:

echo $hi
11

これで動作し、「hi」変数の値は「11」です。しかし。私は:

su -c "echo $hi" bela

変数「hi」には値はありません。なぜ?

(CentOS 6で実行)

ベストアンサー1

su -c "echo $hi" belasu-cおよび単語に展開されますecho ​bela変数がhi現在シェルで定義されていないため、拡張は空です。ユーザーとして実行されるコマンドはbelaですecho ​

修正: su -c 'echo $hi' bela、一重引用符で保護されて拡張されません$...いいえ。この.bashrcファイルは対話型シェルからのみ読み取ることができます。を実行すると、ユーザーとして実行されsu -c 'echo $hi' belaます。しかし、変数を定義するものがないので、コマンドは拡張され、まだ何も印刷しません。echo $hibelahiecho $hiecho

おすすめ記事