Wenn ich Bash in einer sauberen Umgebung ausführe, erwarte ich, dass der Pfad leer ist. Allerdings gilt:
odin ~ 210$ env -i bash --norc --noprofile
bash-4.4$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
bash-4.4$ uname -a
Linux odin 4.10.0-42-generic #46-Ubuntu SMP Mon Dec 4 14:38:01 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
bash-4.4$
Der Pfad ist nicht leer.
Ich habe die Dokumentation ein paar Mal durchgesehen, aber vielleicht habe ich etwas übersehen.
Meine Frage: Wo ist das dokumentiert?
Danke.
-E
Antwort1
Ich habe ein paar Hinweise in gefunden man bash
.
(1) In der Dokumentation der PATH-Variable:-
PATH Der Suchpfad für Befehle. Es handelt sich um eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen die Shell nach Befehlen sucht (siehe BEFEHLSAUSFÜHRUNG weiter unten). Ein Verzeichnisname mit der Länge Null (null) im Wert von PATH gibt das aktuelle Verzeichnis an. Ein Null-Verzeichnisname kann als zwei nebeneinander liegende Doppelpunkte oder als Doppelpunkt am Anfang oder Ende erscheinen. Der Standardpfad ist systemabhängig und wird vom Administrator festgelegt, der Bash installiert. Ein gängiger Wert ist ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''.
(2) In der Dokumentation von command
:
Befehl [-pVv] Befehl [Argument ...] Führt den Befehl mit Argumenten aus und unterdrückt die normale Shell-Funktionssuche. Es werden nur integrierte Befehle oder im Pfad gefundene Befehle ausgeführt. Wenn die Option -p angegeben ist, wird die Suche nach dem Befehl mit einem Standardwert für PATH durchgeführt, der garantiert alle Standarddienstprogramme findet. ...
Unter Ubuntu 18.04.2 erhalte ich die gleiche PATH
Variable. Mir sind zwei Dinge aufgefallen:
- Dies
PATH
gilt auch für.
, aber im Allgemeinen ist davon abzuraten. - In der neuen
bash
Instanzdeclare -p PATH
wird angezeigt, dassPATH
es wie in der normalen Konfiguration nicht exportiert wird und daherenv
nichtPATH
in der Umgebungsliste angezeigt wird.