Ich habe festgestellt, dass der Standardpfad für root auf meinen VMs und Servern nicht / usr / local / bin enthält
sudo -s
echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
Während normale Benutzer auf dem Server / usr / local / bin haben
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/sowen/bin
Warum braucht root / usr / local nicht im Pfad?
Wo ist der Standardpfad für einen Benutzer definiert?
/usr/local/sbin
und/usr/local/bin
auf dem Standardpfad von root, aber es gibt Ausnahmen./usr/local/bin
und einer ohne). Und der mit/usr/local/bin
, ich konnte nicht finden, wo es eingestellt wurde.Antworten:
Weil es nicht in den relevanten Shell-Startdateien für root eingerichtet ist.
Wurde traditionell
/usr/local
für inoffizielle, lokal installierte Software verwendet (häufig, um fehlerhafte / defekte / eingeschränkte "offizielle" Versionen zu überschreiben; ein Freund witzelte, dass der erste Schritt, als eine neue Sonne eintraf, warGNU > /usr/local
). Alsroot
allmächtig ist, kann jeder Fehler oder Missverständnis in den Programmen, die es ausführt, fatal sein. Es liegt nahe, dass das Ausführen einer lokalen, experimentellen Version vonmake
by root mit Vorsicht behandelt werden sollte. Besser, Sie geben einen expliziten Pfad an.quelle