2013-04-17 65 views
0

我试图写一个脚本,除其他事项外,安装RVM之间切换。为了做到这一点,脚本是以root身份运行(须藤setup.sh),其中setup.sh调用安装RVM标。但是,为了安装rvm我需要成为用户,所以我想从根目录切换为用户。我这样做是这样的:bash脚本,目录和用户

在setup.sh:如果我做which source

sudo: source: command not found 

我什么也没得到为:

# Do some stuff as root 

# Install rvm 
sudo -u $SUDO_USER source path/to/rvm_install/script 
sudo -u install_rvm 

然而,当我这样做,我得到的bash从这个错误无论是root还是$ SUDO_USER。但是,例如,我可以源代码.bash_profile,没有错误。而且,我可以提供源代码,并且有一本手册,因此我知道该源代码已安装。

如何切换到$ SUDO_USER,仍然可以得到的bash承认我的下标?

回答

0

type source会告诉你,source是一个shell内置的,而不是外部命令。 shell内建只能在外壳内使用,而不是通过像sudo外部工具。

如果要执行你的下标,扔掉设置任何环境变量,你可以做

sudo -u $SUDO_USER bash path/to/rvm_install/script 

如果install_rvm命令需要在路径定义的变量或函数/到/ rvm_install /脚本,可以使用

sudo -u $SUDO_USER bash -c 'source path/to/rvm_install/script; install_rvm' 
+0

的作品就像一个魅力!感谢您的帮助解释和sudo命令。 – Sly