Mam następujące aliasy w /etc/profile
.
# System-wide .profile for sh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
alias startapache="/usr/local/Cellar/httpd22/2.2.29/bin/apachectl start"
alias stopapache="/usr/local/Cellar/httpd22/2.2.29/bin/apachectl stop"
alias ll='ls -lG'
Właśnie dodałem ostatnie trzy aliasy. Teraz kiedy to zrobię
sudo su
: Nie rozumiem tych aliasów.
sh-3.2# startapache
sh: startapache: command not found
ale kiedy nie wykonuję sudo , otrzymuję te aliasy (To jest powłoka bash). Ale to nie zaczyna apache.
local:~ 112019$ startapache
(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
command-line
bash
sudo
alias
burza mózgów
źródło
źródło
sudo su
Uruchomienie daje powłokę z bardzo prostym monitem, co zwykle nie dzieje się, gdy jest uruchomiona w Ubuntu.) Jeśli to pytanie dotyczy systemu OS X, a nie Ubuntu, powinniśmy go zamknąć, być może migruj do Unix.SE.Odpowiedzi:
bash
Shell tylko czyta/etc/profile
, gdy wywoływany jako powłoki logowania , któresu
normalnie nie robić - trzeba by powołaćsu
się-
,-l
czy--login
opcja. Odman su
:Zobacz,
man bash
aby uzyskać szczegółowe informacje o tym, które pliki startowe są odczytywane przez interaktywne logowanie, interaktywne logowanie bez logowania i nieinteraktywne powłoki.źródło
sudo su -l
nim i wydaje się, że wybiera alias.Aby udostępnić te aliasy
root
, możesz je umieścić/root/.bash_aliases
.Jeśli jednak chcesz uruchomić te aliasy
root
od użytkownika, możesz je po prostu wstawić~/.bash_aliases
i dodaćsudo
na początku polecenia każdego aliasu:Na początku też tego nie zauważyłem, ale użycie
ll
jako aliasuls -lG
przytłoczyłoby zachowanie niesłyszącegoll
aliasu, jeśli zostało ustawione/root/.bash_profile
i ustawione~/.bash_profile
, jeśli jest ustawione jako aliasls -la
: więc chyba, że chceszll
przytłumić zachowanie aliasu dla użytkownika, który ostatecznie dodasz te aliasy, powinieneś zmienić jego nazwę na coś innego, np. nalg
:źródło
ls
aliasu, takiego jakll
uruchamianiels
z,sudo
wydaje się złym pomysłem, ponieważls
nie trzeba / nie należy uruchamiać jako root, gdy nie jest to konieczne, a ponieważ uruchamianie go jako root, gdy nie jest to oczekiwane, byłoby dziwne . (W szczególności użytkownik może być zdezorientowany, dlaczego wyświetla monit o podanie hasła, lub może być zdezorientowany, dlaczego nie może uzyskać dostępucd
do katalogu, który wydaje się być w staniels
.) Jeślisudo ls -lG
potrzebny jest alias do uruchomienia , sugerowałbym jedna z innej nazwy - może ją nazwaćsll
.