你如何给当前用户环境变量su

ken*_*ntz 18 linux bash ubuntu

我有一个设置的变量.bashrc.

~/.bashrc:

PROJ_HOME=~/Projects/stable
Run Code Online (Sandbox Code Playgroud)

从bash shell,我想做这样的事情:

$ su -l kenneth -c 'echo $PROJ_HOME'
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,预期/home/kenneth/Projects/stable不会打印出来.

有关如何做到这一点的任何想法?

Dan*_*n V 17

你试过su -m选项吗?

-m, --preserve-environment
              do not reset environment variables
Run Code Online (Sandbox Code Playgroud)

例如:su -m kenneth -c'echo $ PROJ_HOME'

  • 嗯,谢谢你的答案,但似乎不起作用.`$ su -m kenneth -c"echo $ PROJ_PATH"`.我得到一个空行. (7认同)

Pau*_*ce. 9

您需要导出变量.您可能不需要使用该-m选项su来保护环境.

export PROJ_HOME=~/Projects/stable
Run Code Online (Sandbox Code Playgroud)


Car*_*rlo 7

试试吧su -m -l kenneth -c 'echo $PROJ_HOME'.-m应该保护环境.

编辑再次阅读你的问题,我想我可能会理解它的逆转.你也可以试试这个:su -l kenneth -c '. /home/kenneth/.bashrc; echo $PROJ_HOME.