zsh
ma funkcję uzupełniania poleceń w PATH
nazwie _path_commands
. Możesz skonfigurować zakończenie, aby go używać, myFunc
uruchamiając:
compdef _path_commands myFunc
Uwaga: wymaga to zainicjowania systemu uzupełniania zsh . Zwykle (zgodnie z konfiguracją compinstall
) dzieje się to w twoim ~/.zshrc
przypadku
# some zstyle configurations
autoload -Uz compinit
compinit
Wszelkie połączenia compdef
należy wykonać po compinit
. Jeśli podczas działania występują błędy „nie znaleziono polecenia” compdef
, sugeruję skonfigurowanie systemu uzupełniania za pomocą compinstall
.
Uwaga: ze względów bezpieczeństwa, zsh zgłasza błędy, jeśli dowolne katalogi w $ fpath są dostępne do zapisu na całym świecie. Jeśli pojawi się błąd:
zsh compinit: niezabezpieczone katalogi, uruchom compaudit dla listy. Zignorować niepewne katalogi i kontynuować [y] czy przerwać wykonywanie [n]?
Nie po prostu naciśnij y, ale naciśnij n, a następnie spróbuj, compaudit | xargs chmod g-w
jak sugerowano na https://stackoverflow.com/questions/13762280/zsh-compinit-insecure-directories
zsh -f
). Działało dobrze w każdym przypadku, nie psując innych uzupełnień. Może sugeruję, że coś jest nie tak z zsh na twoim komputerze z Linuksem, albo w konfiguracji, albo w zainstalowanym pakiecie. Czy wszystko działa na twoim Linuksie, jeśli po prostu pominieszcompdef _path_commands myFunc
?