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 alias
dotyczą 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 chsh
aby 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?