Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sudo作为另一个用户安装grails_Grails_Sudo_Gvm - Fatal编程技术网

使用sudo作为另一个用户安装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

我想在我的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 -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'