Ich möchte ein beliebiges als Argument angegebenes Programm über die Shell ausführen möchte, dass die Shell als interaktive Shell übrig bleibt, um sie später zu verwenden.
%Vor%Aber es funktioniert nicht mit zsh
%Vor%sowie wenn jemand mehr verbesserte Art und Weise weiß, es zu tun lass es mich wissen.
Ansatz 1: bash, zsh und einige andere Shells lesen eine Datei, deren Name in der Umgebungsvariable ENV
steht, nach den üblichen rc-Dateien und vor den interaktiven Befehlen oder dem auszuführenden Skript. Bash tut dies jedoch nur, wenn es als sh aufgerufen wird, und zsh tut dies nur, wenn es als sh oder ksh aufgerufen wird, was eher einschränkend ist.
Ansatz 2: Lassen Sie die Shell eine andere RC-Datei lesen, die die übliche RC-Datei bereitstellt und einen Aufruf des Programms enthält, das Sie ausführen möchten. Zum Beispiel für bash:
%Vor% Für zsh muss die Datei .zshrc
heißen, Sie können nur ein anderes Verzeichnis angeben.
Ich benutze dies in einem Skript, um GUI-Programme von der Shell aufzurufen, habe es aber nicht mit zsh getestet
%Vor%An diesem Punkt ist vim geöffnet.
%Vor%shell ist für Sie übrig, um andere Arbeiten zu erledigen. In meiner Frage war die STDIN der Bash Shell HEREDOC (& lt; & lt; EOF), also für also funktioniert es nicht für den Befehl, der von TTY lesen möchte. Aber nach dem Bereitstellen der Befehlseingabe von / dev / tty beginnt es zu arbeiten.
Ich kann die Warnung nicht finden
%Vor%