2013-08-17 84 views
0

我想运行我们在Mac OS X Mountain Lion上的Linux上编写的一些bash脚本。该脚本执行在Mac OSX上使用sudo在shell脚本中运行登录shell

#!/bin/bash 
sudo su -l <username> << EOF 
echo $HOME 
#execute command that is only on the path of <username> 
EOF 

不,我运行脚本USER1,我在剧本尝试切换到user2的。我实际上需要它像这样运行,因为还有其他部分需要以user1身份运行。

在Linux上,我得到

/home/user2 

在Mac OS XI得到

/Users/user1 

所以它不是实际执行的登录和依赖于我们被登录为用户2失败,那么这样的任何脚本因为它没有引用用户2的.bash_profile/.bashrc

一直在努力这一段时间,现在好像现在有办法让OS X以同样的方式运行像linux一样。

回答

1

在输入到达su shell之前,shell正在解释heredoc中的$HOME变量。你需要躲避$

bash-3.2$ sudo su -l root <<EOF 
> echo $HOME 
> echo \$HOME 
> EOF 
/Users/kevin 
/var/root 

真正的问题是,为什么它在你的Linux系统中运行。

+0

谢谢,这有助于很多,重新Linux的框似乎有人与该用户搞砸。但我真正的问题是Mac OS X没有运行.bashrc。 现在我已经处理了$ HOME,不再是我希望的问题。 – aorticDefiance