/ / Optionen funktionieren nicht innerhalb von zsh script - zsh, options

Optionen funktionieren nicht innerhalb von zsh script - zsh, options

Dies scheint kein allgemeines Problem zu sein, aber ich kann keine ZSH-Optionen erhalten, um in einem ZSH-Skript zu arbeiten, z. autocd:

#!/usr/bin/env zsh

setopt autocd
my_directory

Ich bekomme nur "Befehl my_directory existiert nicht",was passiert, wenn diese Option nicht gesetzt ist. Die Tatsache, dass ich nicht viele Suchergebnisse für Einstellungsoptionen in Skripten bekomme (und diese Frage scheint eindeutig zu sein) deutet darauf hin, dass ich einige wichtige Informationen vermisse, die ich habe noch nicht gesehen.

Vielen Dank!

Antworten:

0 für die Antwort № 1

Blick auf den Quellcode (ab dem letzten git Version, HEAD = 36b8f83 am 7. November 2014), in Src / exec.c, sehe ich das in Zeile 2854:

    char trycd = (isset(AUTOCD) && isset(SHINSTDIN) &&
(!redir || empty(redir)) && args && !empty(args) &&
!nextnode(firstnode(args)) && *(char *)peekfirst(args));

Daraus ergibt sich (obwohl nicht dokumentiert, dass ich finden kann), dass die SHINSTDIN Option muss auch auf gesetzt sein AUTOCD arbeiten. Sie können diese Option jedoch nicht einfach in einem Skript aktivieren (indem Sie -s B. zum Shebang), denn dann liest die Shell, die Ihr Skript ausführt, keine Befehle aus dem Skript.

Ich weiß nicht, ob ich vorbeuge AUTOCD vom Arbeiten ohne SHINSTDIN ist ein Fehler, oder wenn es einen undokumentierten Grund gibt, warum es wahr sein muss; Das wäre eine gute Frage für die Mailingliste von zsh-worker.