2016-05-13 12 views
-1

私はUbuntu 14.04.4 LTSを使用し、vnc4serverをインストールしました。 vncdesktopsを起動する基本スクリプトは、bashスクリプトである/etc/init.d/vncserverにあります。これは/etc/vncserver/vncservers.confで指定されたすべてのユーザーが引数を使ってうまく動作します。しかし、ユーザーがbashではなくcshを使用している場合、vncserverスクリプトの構文エラーのためにvncserverコマンドが機能しません。このエラーはここで示したstart()関数で発生します。 ubuntu 14.04.4のvncserver bashスクリプトエラーLTS

start() { 
. /lib/lsb/init-functions 
REQ_USER=$2 
echo -n $"Starting $prog: " 
ulimit -S -c 0 >/dev/null 2>&1 
RETVAL=0 
for display in ${VNCSERVERS} 
do 
export USER="${display##*:}" 
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then 
echo -n "${display} " 
unset BASH_ENV ENV 
DISP="${display%%:*}" 
export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}" 
su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}" 
fi 
done 
} 

私は、コマンド「sudoのサービスvncserverを再起動」vncserverをスクリプトの実行を与え、CSHを使用して、ユーザーのために私は、このエラーを与える

Starting VNC server: 8:test1 [: No match. 

ユーザーtest1のは、「CSH使用され、その表示数が8である私は、このエラーはライン

su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}" 

から来ていると私はそれをやっているのか理解が、私は知りません見ることができますなぜブラケットの状態が私にこのエラーを与えているのか、それはcshを使っているユーザのためだけです。 誰かが私に手掛かりを与えることができますか?

+0

「cd〜$ {USER}」はcshで期待どおりに展開されますか? '[-f .vnc/passwd]'が$ {users-home-dir}/.vnc/passwdファイルを探していて、見つからないので、これをテストしたいかもしれません。 Conversly .vnc/passwdファイルは実際にはtest1のホームディレクトリにありますか? – Cwissy

+0

$ {USER}は期待通りにtest1として展開し、.vnc/passwdは〜test1に存在します。 BTWスクリプト自体はbashスクリプトです。 –

+0

tcshをインストールし、csh用のtcshへのリンクを作成しましたが、問題はなくなりました。どうしてか分かりません.. –

答えて

0

私は正確にはわかりませんが、/ bin/cshが以下のようにリンクされています。

私はtcsh(apt-get install tcsh)をインストールし、このようなリンクを作成しました。

/bin/csh -> /bin/tcsh 

次に問題はなくなりました。 suコマンドと-cオプションで実行されたコマンドは、suのユーザーのシェルである/ etc/alternatives/cshで処理されていますが、これはおそらく[-f]条件を処理できませんでした。/etc/alternatives/cshは、本当の本格的なcsh(tcshなど)がない場合にリンクされるデフォルトのcshの一種です。

関連する問題