2016-09-28 211 views
-1

我尝试在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的的。

+0

为什么你排除在第二个命令的几许? –

+0

我的错误,我尝试了两个,但只发布没有短跑一个 –

+0

这将是单引号试试这些信息:'sudo su - hbase -c'echo $ JAVA_HOME''和'sudo su - hbase -c'echo $ PATH''。它应该显示'/ usr/local/jdk/bin'不在根目录的路径中。 – webb

回答

0

它看起来像/usr/local/jdk/bin不在hbasePATH。将/usr/local/jdk/bin添加到PATH/etc/bash.bashrc/home/hbase/.bashrc

因为双引号的,本次测试没有做什么,你可能会想:

sudo su - hbase -c "echo $PATH" 

$PATH双引号有其价值之前sudo su - hbase -c运行取代里面。

尝试这些测试出来:

sudo su - hbase -c "echo `whoami`" 
sudo su - hbase -c 'echo `whoami`' 
sudo su - hbase -c 'echo $JAVA_HOME' 
sudo su - hbase -c 'echo $PATH' 
+0

哦,对!但是我怎么让hbase使用'/ etc/bash.bashrc'作为环境? –

+0

它可能已经,或者你可以尝试:'sudo ln -s /etc/bash.bashrc/home/hbase/.bashrc' – webb

相关问题