如果我附加这个:
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
and bela
。由于该变量hi
未在当前 shell 中定义,因此其扩展为空。以用户身份执行的命令bela
是echo
。
修复:su -c 'echo $hi' bela
,用单引号保护不$
扩展...不。该.bashrc
文件只能由交互式 shell 读取。当您运行时su -c 'echo $hi' bela
,将以echo $hi
用户身份执行bela
。但由于没有任何内容定义变量hi
,因此该命令echo $hi
扩展为echo
仍然不打印任何内容。