これを追加すると:
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" bela
su
、-c
および単語に展開されますecho
。bela
変数がhi
現在シェルで定義されていないため、拡張は空です。ユーザーとして実行されるコマンドはbela
ですecho
。
修正: su -c 'echo $hi' bela
、一重引用符で保護されて拡張されません$
...いいえ。この.bashrc
ファイルは対話型シェルからのみ読み取ることができます。を実行すると、ユーザーとして実行されsu -c 'echo $hi' bela
ます。しかし、変数を定義するものがないので、コマンドは拡張され、まだ何も印刷しません。echo $hi
bela
hi
echo $hi
echo