Czy zsh
powłokę można skonfigurować tak, aby pokazywała, co bash
pokazuje, gdy polecenie nie istnieje, podobnie jak to:
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
zamiast monitu ZSH:
[kahless /home/teward]% sysv-rc-conf
zsh: command not found: sysv-rc-conf
Uwaga: Nie chcę zmieniać samego monitu, ale chcę zmienić wynik z zsh: command not found
na wynik The program 'progname' is currently not installed. You can install it by typing:
podobny do bash lub podobny.
Czy to możliwe dzięki ZSH?
The program 'progname' is currently not installed. You can install it by typing:
część)zsh: command not found: sysv-rc-conf
zsh: command not found
linii.command not found
wiadomość, którą możesz dodaćexit
na końcu funkcjicommand_not_found_handler
w/etc/zsh_command_not_found
.Pamiętaj, że możesz dodać sprawdzenie, czy plik istnieje, jeśli udostępniasz plik .zshrc między dystrybucjami, które nie mają
/etc/zsh_command_not_found
pliku:Ponadto, jeśli używasz oh-my-zsh , istnieje już wtyczka,
command-not-found
którą możesz dodać doplugins
zmiennej, która robi to samo.źródło
Jeśli używasz oh-my-zsh , możesz po prostu szukać „wtyczek” w swoim
.zshrc
.Dodaj
command-not-found
wtyczkę do listy wtyczek do automatycznego ładowania (ta wtyczka jest już domyślnie zainstalowana).Lubię to:
źródło
Działa to poprzez funkcję command_not_found_handle () w bash. bash zapewnia hak, który jest w zasadzie funkcją wywoływaną, gdy polecenie nie zostanie znalezione. Implementacja bash Ubuntu przechwytuje go i wyszukuje pakiety, podczas gdy bash Debiana nie (i to samo z zsh). Możesz sprawdzić stronę zsh, aby sprawdzić, czy ma podobną funkcję.
Oto jak możesz zacząć, mając nadzieję, że Zsh jest podobny.
źródło
command-not-found
się domyślnie, a Debian nie. Ta funkcja już istnieje dla Zsh, po prostu domyślnie nie jest aktywowana.command_not_found_handler
w Zsh. Zobacz zsh.sourceforge.net/Doc/Release/Command-Execution.html .Również jeśli nie chcesz, aby zsh zachowywał się tak przez 100% czasu, możesz po prostu ręcznie zrobić coś takiego:
/usr/lib/command-not-found urxvt
lub dodaj polecenie $ not-found-found do swojej $ PATH
źródło