我有一个非常简单和烦人的问题,我试图作为一个特定的用户启动我的数据库,但是,*su--session comman*d失败了!

##############################

#!/bin/bash

objectdb-start.sh

OBJECTDB_HOME=/opt/java-tools/objectdb-2.3.0_04
JAVA_USER=javauser

CMD="su --session-command=\"${OBJECTDB_HOME}/bin/objectdb.sh start\" ${JAVA_USER}"

echo $CMD
$CMD

##############################

然后a得到这个错误:
[root@Taturana bin]# ./objectdb-start.sh
su --session-command="/opt/java-tools/objectdb-2.3.0_04/bin/objectdb.sh start" javauser
su: user start" does not exist

知道吗?
PS:我用的是15号软呢帽

最佳答案

转义的双引号给您带来麻烦。它们在命令行上的功能并不像您所期望的那样。因此,shell会看到空格,并将start"解释为su的第二个参数,指定用户名。
回显控制台上的命令行真的很重要吗?你最好做这样的事:

su --session-command="${OBJECTDB_HOME}/bin/objectdb.sh start" $JAVA_USER

或者使用sudo代替:
sudo -u $JAVA_USER $OBJECTDB_HOME/bin/objectdb.sh start

10-04 16:10