Re: Midnight commander startup langsam unter zsh

From: Manfred Lotz <manfred.lotz(at)web.de>
Date: Sat, 19 Jul 2003 21:29:19 +0200

On Saturday 19 July 2003 20:38, Manfred Lotz wrote:
> On Saturday 19 July 2003 20:08, Oliver Fromme wrote:
> > Manfred Lotz <manfred.lotz(at)web.de> wrote:
> > > Ich hatte /usr/local/share/mc/bin/mc-wrapper.sh benutzt, weil ich
> > > gerne möchte, dass sich midc das zuletzt genutzte Verzeichnis merkt.
> > > Diese Vorgehensweise wurde auf der manpage empfohlen.
> >
> > Wenn die manpage tatsächlich ein Sourcen des Scripts mit
> > der jeweiligen Login-Shell empfiehlt, dann hatte derjenige,
> > der die manpage geschrieben hat, nicht sonderlich viel
> > Durchblick. ;-)
> >
> > Ich kann jetzt nur vermuten, daß das Script deswegen ge-
> > sourced werden will, weil es nicht stateless ist und ir-
> > gendwas in einer Umgebungsvariablen speichert. Das ist
> > ziemlicher Pfusch.
>
> Exakt! mc schreibt das zuletzt benutzte PWD in die Datei
> MC_PWD_FILE="${TMPDIR-/tmp}/mc-$USER/mc.pwd.$$"
>
> > Versuch einfach mal, den Punkt in dem Alias wegzulassen.
> > Wenn das Skript dann noch so funktioniert, wie Du es Dir
> > denkst, dann ist es in Ordnung. Ansonsten sollte man das
> > Skript neu schreiben.
>
> Ohne Sourcen funktioniert der obige Mechanismus dann nicht mehr, weil in
> dem Script dann am Ende cd "$MC_PWD" gemacht wird.
>
> Wie ist denn da der elegante Ansatz, wenn man etwas an den Aufrufer
> zurückgeben will, wie z. B. das letzte Arbeitsverzeichnis?
>

Hallo Olli,

Auch ohne Sourcen war der Hänger immer noch da. Wenn ich einfach mal annehme,
dass es irgendwie mit der correct Funktion im zsh zu tun hat, müsste das
folgende ein Ansatz sein (du hast mir mal dieses Prinzip bei lsd gezeigt):

alias mc="nocorrect mc_func"

mc_func()
{
   MC_PWD_FILE="${TMPDIR-/tmp}/mc-$USER/mc.pwd.$$"
   /usr/local/bin/mc -P "$MC_PWD_FILE" "$@"

   if test -r "$MC_PWD_FILE"; then
        MC_PWD="`cat $MC_PWD_FILE`"
        if test -n "$MC_PWD" && test -d "$MC_PWD"; then
                cd "$MC_PWD"
        fi
        unset MC_PWD
   fi

   rm -f "$MC_PWD_FILE"
   unset MC_PWD_FILE
}

Ich habe dabei der EInfachheit halber einfach das Wrapper-Script in die
Function gepackt.

Es funktioniert jedenfalls -- hoffentlich ohne Hänger. Da der Hänger nur
sporadisch geschieht, muss ich es mal einige Zeit beobachten.

Gruss,
Manfred

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 19 Jul 2003 - 21:29:29 CEST

search this site