Mam funkcję w moim ~/.zshrc:
findPort() {
lsof -t -i :$1
}
Zwykłe wywołanie to findPort 3306.
Chcę uruchomić go z podwyższonymi uprawnieniami. Ale dostaję „polecenie nie znaleziono”.
➜ git 🍔 sudo findPort 3306
sudo: findPort: command not found
Zakładam, że powodem jest to, że użytkownik root albo działa jako nieinteraktywna powłoka (dlatego nie odnosi się do .zshrc), albo odnosi się do innej .zshrc .
Widziałem podobne pytania dotyczące alias, ale nie ma pytań dotyczących funkcji zdefiniowanych przez użytkownika. Odpowiedzi na ten problem aliasdotyczą dodania aliasu do ~/.zshrc:
alias sudo='nocorrect sudo '
A może:
alias sudo='sudo '
Wypróbowałem oba te rozwiązania, a problem nadal występuje (tak, ponownie uruchomiłem powłokę).
Próbowałem także uruchomić, sudo chshaby upewnić się, że moja powłoka root działa zsh. Żadne z tych rozwiązań nie usuwa problemu „nie znaleziono polecenia”.
Czy istnieje sposób uruchamiania moich funkcji zdefiniowanych przez użytkownika w sudo?