使用sudo作为另一个用户安装grails
我想在我的vagrant provision引导bash文件(以root用户身份执行)中安装grails。我尝试更改安装,如图所示: 但这会产生错误:使用sudo作为另一个用户安装grails,grails,sudo,gvm,Grails,Sudo,Gvm,我想在我的vagrant provision引导bash文件(以root用户身份执行)中安装grails。我尝试更改安装,如图所示: 但这会产生错误: bash: /root/.gvm/bin/gvm-init.sh: Permission denied bash: gvm: No such file or directory 我做错了什么?这可能有用: curl -s get.sdkman.io | sudo -u vagrant -H bash -i sudo -u vagrant -H
bash: /root/.gvm/bin/gvm-init.sh: Permission denied
bash: gvm: No such file or directory
我做错了什么?这可能有用:
curl -s get.sdkman.io | sudo -u vagrant -H bash -i
sudo -u vagrant -H bash -i 'source "$HOME/.sdkman/bin/sdkman-init.sh"; sdk install grails'
-i(模拟初始登录)选项... 这意味着shell将读取特定于登录的资源文件,如.profile或.login。如果指定了命令,则会将该命令传递给shell以供执行 执行
那可能是什么错误呢?首先,你不应该运行init脚本,但你必须找到它的来源。第二个问题是,
gvm
是一个shell函数,没有脚本。我会确保在你的流浪用户的个人资料中进行寻源,然后“bash-c‘gvm安装grails’可以通过sudo工作。要尝试一下,我先从sudo-u vagrant-H bash-i
开始,并尝试让它首先在用户内部工作。-i如果存在-i选项,shell是交互式的。
为什么要这样做?流浪者条款脚本完全不是交互式的;)使用本地帐户进行测试将有助于理解gvm的工作原理(它源于gvm init并提供了一个函数gvm)。它必须至少包含一行内容:'bash-c“source…gvm-init.sh;gvm install grails”
的-i(模拟初始登录)选项。。。这意味着shell将读取特定于登录的资源文件,如.profile或.login。如果指定了命令,则将其传递给shell执行。
curl -s get.sdkman.io | sudo -u vagrant -H bash -i
sudo -u vagrant -H bash -i 'source "$HOME/.sdkman/bin/sdkman-init.sh"; sdk install grails'