我希望以我当前用户的权限运行TOMCAT,而不是root的环境变量。
vagrant@dev:~/Workspace/eurekastreams$ echo $JAVA_OPTS
-Xmx1024m -XX:MaxPermSize=128m -Dlog.home=/home/vagrant/Workspace/software/
我试过,vagrant$>sudo -E /etc/init.d/tomcat7 start
。
但是,我的软件没有登录到/ home / vagrant / Workspace / software目录,我相信这意味着没有设置JAVA_OPTS环境变量。
我是否正确理解sudo -E它将使用当前用户的env vars执行命令?
答案 0 :(得分:4)
来自man sudo
:
-E, --preserve-env
Indicates to the security policy that the user wishes to preserve their existing
environment variables. The security policy may return an error if the user does
not have permission to preserve the environment.
因此,-E
将使用当前环境变量执行命令。
答案 1 :(得分:1)
除非你在sudo中使用-u参数,否则它将以root身份运行你的命令。怎么样:
sudo -u yourusername -l /etc/init.d/tomcat7 start
-u username:以指定用户身份运行命令 -l:使它成为一个登录shell,读取.bashrc等starup脚本,我认为这是你设置环境变量的地方。
答案 2 :(得分:0)
怎么样:
JAVA_OPTS=$JAVA_OPTS sudo -E /etc/init.d/tomcat7 start
证明:
~/Desktop> X=foo sudo bash
# echo $X
# exit
exit
~/Desktop> X=foo sudo -E bash
# echo $X
foo
# exit
exit
~/Desktop>
答案 3 :(得分:0)
我认为/etc/init.d/tomcat7
只是一个起始脚本,而不是tomcat二进制文件本身,所以sudoing它没有任何意义。
您应该编辑此脚本,或者例如将其另一个副本安装到/home/$USER/bin/
之类的内容中,然后从那里开始。