2011-11-03 31 views
0

我有一個非常簡單和煩人的問題,我試圖啓動我的數據庫作爲特定用戶,但* su --session-comman * d失敗了!su -session-command錯誤

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

#!/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 

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

然後,得到這個錯誤:

[[email protected] 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:我正在使用Fedora 15

+1

'#/斌/ bash'不會有任何影響,除非它是__very第一thing__在你的腳本文件。 – eaj

回答

1

逃脫的雙引號引起了您的麻煩。正如你所期望的那樣,它們在命令行上不起作用。因此,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 
+0

回聲只是看看這個命令是什麼樣的,而且sudo不能被使用,因爲它需要一個tty,我要把這個腳本添加到systemd – LottaLava

+0

你是對的,我改變了引號以便使用:''並且工作正常。 – LottaLava