我使用Ubuntu 14.04.4 LTS並安裝了vnc4server。 啓動vncdesktops的基本腳本位於/etc/init.d/vncserver這是一個bash腳本。這對於在/etc/vncserver/vncservers.conf中指定的所有用戶都適用。但是,當用戶使用csh而不是bash時,vncserver命令不起作用,因爲vncserver腳本中存在語法錯誤。這個錯誤發生在我在這裏展示的start()函數中。ubuntu下vncserver bash腳本錯誤14.04.4 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
}
當我發出命令「須藤服務的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的用戶。 任何人都可以給我一個線索嗎?
「cd〜$ {USER}」是否按照預期在csh中展開?您可能希望對此進行測試,因爲'[-f .vnc/passwd]'正在查找$ {users-home-dir} /。vnc/passwd文件,並且找不到它。換言之,.vnc/passwd文件實際上是否存在於test1的主目錄中? – Cwissy
$ {USER}像我預期的那樣擴展爲test1,而.vnc/passwd存在於〜test1中。順便說一句,腳本本身是一個bash腳本。 –
我安裝了tcsh併爲csh創建了一個tcsh的鏈接,現在問題消失了。我不知道爲什麼.. –