Ich benutze Ubuntu 14.04.4 LTS und installiert vnc4server. Das grundlegende Skript, das vncdesktops startet, befindet sich unter /etc/init.d/vncserver, was ein Bash-Skript ist. Dies funktioniert für alle Benutzer, die in /etc/vncserver/vncservers.conf mit ihren Argumenten angegeben sind. Wenn ein Benutzer jedoch csh anstelle von bash verwendet, funktioniert der vncserver-Befehl aufgrund eines Syntaxfehlers im vncserver-Skript nicht. Der Fehler tritt in der Funktion start() auf, die ich hier zeige.vncserver bash script fehler in ubuntu 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
}
Wenn ich den Befehl ‚sudo Service vncserver Neustart‘, um die Skript vncserver läuft und geben Sie mir diesen Fehler für einen Benutzer mit csh geben.
Starting VNC server: 8:test1 [: No match.
Benutzer ‚test1‘ wird unter Verwendung von csh und seine Anzeige Nummer 8 kann ich diesen Fehler sehen von der Leitung kommenden
su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
und ich verstehe, was es tut, aber ich weiß nicht, Warum gibt mir die Bracket-Bedingung diesen Fehler und das nur für einen Benutzer, der csh verwendet. Kann mir jemand einen Hinweis geben?
erweitert sich "cd ~ $ {USER}" wie erwartet in csh? Vielleicht möchten Sie dies testen, da die '[-f .vnc/passwd]' nach der Datei $ {users-home-dir} /. vnc/passwd sucht und nicht gefunden wird. Konversiert die .vnc/passwd-Datei tatsächlich im Home-Verzeichnis von test1? – Cwissy
$ {USER} wird wie erwartet erweitert und .vnc/passwd existiert in ~ test1. Übrigens ist das Skript selbst ein Bash-Skript. –
Ich installierte tcsh und machte einen Link zu tcsh für csh, jetzt ist das Problem weg. Ich weiß nicht warum ... –