为什么这个变量即使在 .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" bela扩展为单词su, -c, echo ​and bela。由于该变量hi未在当前 shell 中定义,因此其扩展为空。以用户身份执行的命令belaecho ​

修复:su -c 'echo $hi' bela,用单引号保护不$扩展...不。该.bashrc文件只能由交互式 shell 读取。当您运行时su -c 'echo $hi' bela,将以echo $hi用户身份执行bela。但由于没有任何内容定义变量hi,因此该命令echo $hi扩展为echo仍然不打印任何内容。

相关内容