我使用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的链接,现在问题消失了。我不知道为什么.. –