我有一个非常简单和烦人的问题,我试图作为一个特定的用户启动我的数据库,但是,*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