我尝试在Ubuntu中以其他用户身份运行命令。但它找不到命令。以ubuntu中的其他用户身份运行命令
$ sudo su - hbase -c "echo $JAVA_HOME"
/usr/local/jdk
$ sudo su - hbase -c "echo $PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/jdk/bin
$ sudo su - hbase -c "java -version"
-su: java: command not found
$ sudo su - hbase -c "/usr/local/jdk/bin/java -version"
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
我在centos中测试过,没有问题。我不知道为什么?我该如何在其他用户中运行java?
我的JAVA_HOME
设置在/etc/bash.bashrc
,Ubuntu版本是Ubuntu服务器14.04.1。
其实,我想开始在Hadoop的用户/停止HBase的在
$ sudo su - hbase -c "/usr/local/hbase-1.1.5/bin/hbase-daemon.sh stop regionserver"
no regionserver to stop because no pid file /tmp/hbase-hbase-regionserver.pid
而这个错误是因为它不能让我的环境export HBASE_PID_DIR="/data/hadoop/run/hbase"
,我在/etc/bash.bashrc
设置。
我做了更多的测试,首先我把export ENVTEST=hello
加到/etc/bash.bashrc
,然后做了下面的测试。
$ echo $ENVTEST
$ sudo su - hbase -c "echo $ENVTEST"
$ source /etc/bash.bashrc
$ sudo su - hbase -c "echo $ENVTEST"
hello
好像,当你做sudo su - hbase -c "echo $ENVTEST"
,它使用的是我的用户环境,而不是HBase的的。
为什么你排除在第二个命令的几许? –
我的错误,我尝试了两个,但只发布没有短跑一个 –
这将是单引号试试这些信息:'sudo su - hbase -c'echo $ JAVA_HOME''和'sudo su - hbase -c'echo $ PATH''。它应该显示'/ usr/local/jdk/bin'不在根目录的路径中。 – webb