Jakie są domyślne wartości $ PATH?

13

W systemie Mac OS X $PATHwartości domyślne to:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Jakie są wartości domyślne w systemie Linux?

sonnuforevis
źródło
domyślna ścieżka jest zdefiniowana w config-top.h
bac0n

Odpowiedzi:

18

W domyślnej instalacji Ubuntu na pulpicie $PATH:

$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Ale w minimalnym środowisku chroot utworzonym przez debootstrap, $PATHzawiera tylko:

# echo $PATH
/usr/sbin:/usr/bin:/sbin:/bin
andrews coś
źródło
5

Wartości ścieżki środowiska są przechowywane w pliku .bashrc w Ubuntu.

Ogólnosystemowa zmienna PATH jest zdefiniowana w /etc/environment

Avinash Raj
źródło
3

Są powłoki wbudowane w powłoki

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Zatem domyślna ścieżka dla Ubuntu to:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Braiam
źródło
3

Jest łatwy sposób, aby dowiedzieć się:

printenv

Lub bardziej bezpośrednio:

echo $PATH

Ale jeśli szukasz tylko szybkich informacji, Ubuntu zazwyczaj ustawia ścieżkę do:

/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / bin / X11: / usr / games:

W przypadku takich pytań zazwyczaj można odszukać odpowiedź, czytając Biblię .

Brian Grogan Jr.
źródło
2

W zależności od używanego systemu Linux może być inaczej. Jeśli masz już login do systemu Linux, po prostu wpisz „env”, aby zobaczyć zmienne środowiskowe.

Jeśli chcesz wiedzieć, w jaki sposób budowana jest zmienna PATH env, spójrz na .bashrc i .bash_profile w swoim katalogu domowym. Jeśli jesteś bardziej ciekawy, możesz również spojrzeć na / etc / profile, /etc/profile.d/* (jeśli istnieje) i podręcznik dla bash (man bash).

Jason
źródło
2

bashustawi PATHstałą wartość domyślną, jeśli nie jest ustawiona w środowisku:

$ env -i bash -c 'echo $PATH'
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.

Możemy sprawdzić, czy ta wartość jest rzeczywiście zakodowana na stałe i nie jest odczytywana ze środowiska lub jakiegoś pliku, za pomocą stringsnarzędzia:

$ strings /bin/bash | grep /usr/sbin
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.

Otrzymuję jednak inny wynik na moim komputerze Arch Linux:

$ env -i bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/bin

Wygląda więc na to, że ta domyślna opcja jest wybierana w momencie bashbudowania pliku binarnego, co zależy od używanej dystrybucji Linuksa.

Vladimir Panteleev
źródło
To jedyna odpowiedź, która wspomina o powłoce i dystrybucjach. Natknąłem się na to pytanie, ponieważ rozwiązuję problemy ze ŚCIEŻKĄ w kontenerach Ubuntu. A „domyślna ścieżka” będzie zależeć od powłoki (bash, sh itp.) Oraz od tego, czy zostanie załadowana interaktywnie, czy nie, oraz od tego, czy jest to powłoka logowania. To nie jest prosta odpowiedź. Wyrazy uznania za napisane na stałe ciągi w pliku binarnym.
init_js
1

Aby zobaczyć domyślną ścieżkę, użyj innych wymienionych w odpowiedziach:

echo $PATH

Aby edytować użyj:

gedit ~/.bashrc

Ta PATHzmienna domyślna jest zdefiniowana w /etc/enviroment.

Sukupa91
źródło