Kann die zsh
Shell so konfiguriert werden, dass angezeigt wird, was bash
angezeigt wird, wenn ein Befehl nicht vorhanden ist?
kahless:~$ sysv-rc-conf
The program 'sysv-rc-conf' is currently not installed. You can install it by typing:
sudo apt-get install sysv-rc-conf
anstatt der ZSH-Eingabeaufforderung:
[kahless /home/teward]% sysv-rc-conf
zsh: command not found: sysv-rc-conf
Hinweis Ich möchte die Eingabeaufforderung selbst nicht ändern, aber ich möchte das Ergebnis von zsh: command not found
in eine bash-ähnliche Ausgabe von The program 'progname' is currently not installed. You can install it by typing:
oder ähnlichem ändern .
Ist das mit ZSH möglich?
The program 'progname' is currently not installed. You can install it by typing:
Teil)zsh: command not found: sysv-rc-conf
zsh: command not found
Leitung entfernen soll .command not found
Nachricht können Sieexit
am Ende der Funktioncommand_not_found_handler
in hinzufügen/etc/zsh_command_not_found
.Beachten Sie, dass Sie möglicherweise eine Prüfung hinzufügen möchten, ob die Datei vorhanden ist, wenn Sie Ihre .zshrc-
/etc/zsh_command_not_found
Datei für Distributionen freigeben, für die keine Datei vorhanden ist:Für den Fall, dass Sie oh-my-zsh verwenden , gibt es bereits ein Plugin
command-not-found
, das Sie zu Ihrerplugins
Variablen hinzufügen können , die dasselbe tut.quelle
Wenn Sie oh-my-zsh verwenden , können Sie stattdessen nach "Plugins" in Ihrem Browser suchen
.zshrc
.Fügen Sie das
command-not-found
Plugin zur Liste der Plugins hinzu, die automatisch geladen werden sollen (dieses Plugin ist standardmäßig bereits installiert).So was:
quelle
Die Funktionsweise erfolgt über die Funktion command_not_found_handle () in bash. bash stellt einen Hook bereit, der im Grunde genommen eine Funktion ist, die aufgerufen wird, wenn ein Befehl nicht gefunden wird. Ubuntus Bash-Implementierung fängt es ab und führt eine Paketsuche durch, während Debians Bash dies nicht tut (und dasselbe gilt für zsh). Vielleicht möchten Sie die Manpage von zsh lesen, um zu sehen, ob diese eine ähnliche Funktion hat.
Hier ist, wie Sie anfangen können, in der Hoffnung, dass zsh ähnlich ist.
quelle
command-not-found
standardmäßig installiert wird und Debian nicht. Die Funktion ist auch für zsh bereits vorhanden, sie ist jedoch standardmäßig nicht aktiviert.command_not_found_handler
in zsh. Siehe zsh.sourceforge.net/Doc/Release/Command-Execution.html .Auch wenn Sie nicht möchten, dass zsh dieses Verhalten 100% der Zeit hat, können Sie einfach etwas manuell tun:
/usr/lib/command-not-found urxvt
Oder fügen Sie Ihrem $ PATH einen Befehl hinzu, der nicht gefunden wurde
quelle