0

我正在尝试在 Mac OS X Mountain Lion 上运行我们在 Linux 上编写的一些 bash 脚本。该脚本执行

#!/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

所以它实际上并没有执行登录,因此任何依赖我们以 user2 身份登录的脚本都会失败,因为它没有为 user2 引用 .bash_profile/.bashrc

已经为此苦苦挣扎了一段时间,现在似乎有办法让 OS X 以与 linux 相同的方式运行。

4

1 回答 1

1

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

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

真正的问题是为什么它可以在你的 Linux 机器上运行。

于 2013-08-17T13:48:28.437 回答