切换用户和输出变量内容

时间:2009-11-08 22:29:58

标签: linux bash solaris switch-user

我正在编写一个bash脚本,想要切换到另一个用户,在用户bash_profile中进入由MYDIR指定的目录并列出内容。

目前我有:

read username
su - app${username} -c ls $MYDIR

输出什么都没有,我的第一个猜测是从用户配置文件中读取$ MYDIR是一个问题,因为手动操作很好,例如。

#su - appadmin
#ls $MYDIR

2 个答案:

答案 0 :(得分:1)

您需要引用要执行的命令。

目前,shell正在使用来自调用方环境的值替换$MYDIR。另外-c只传递下一个要执行的arg,即ls没有$MYDIR - 你需要在整个远程命令周围加上引号:

su - app${username} -c 'ls $MYDIR'

答案 1 :(得分:0)

$MYDIR更改为${MYDIR:?}。如果未设置MYDIR,这将导致错误。您可能没有在配置文件中导出变量,这就是它在命令行中工作的原因,而不是脚本。