Quali sono i valori predefiniti $ PATH?


Risposte:


18

Su un'installazione desktop Ubuntu predefinita $PATHè:

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

Ma in un ambiente chroot minimo creato da debootstrap, $PATHcontiene solo:

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

4

I valori del percorso dell'ambiente sono memorizzati nel file .bashrc in Ubuntu.

La variabile PATH a livello di sistema è definita in /etc/environment


3

Ci sono percorsi incorporati nelle shell che sono

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

Quindi il percorso predefinito per Ubuntu è:

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

3

C'è un modo semplice per scoprirlo:

printenv

O, più direttamente:

echo $PATH

Ma, se stai solo cercando alcune informazioni rapide, Ubuntu in genere imposta il percorso su:

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

Per domande come questa, di solito puoi cercare la risposta leggendo la Bibbia .


2

A seconda di quale Linux stai usando, potrebbe essere diverso. Se disponi già di un accesso a un Linux, digita "env" per visualizzare le variabili di ambiente.

Se vuoi sapere come viene creata la variabile env PATH, dai un'occhiata a .bashrc e .bash_profile nella tua home directory. Se sei più curioso, puoi anche guardare / etc / profile, /etc/profile.d/* (se esiste) e il manuale per bash (man bash).


2

bashverrà impostato PATHsu un valore predefinito hardcoded se non è impostato nell'ambiente:

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

Possiamo verificare che questo valore sia effettivamente codificato, e non letto dall'ambiente o da alcuni file, usando l' stringsutilità:

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

Tuttavia, ottengo un risultato diverso sulla mia macchina Arch Linux:

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

Quindi, sembra che questo valore predefinito sia scelto al momento della bashcreazione del binario, che dipende dalla distribuzione Linux in uso.


Questa è l'unica risposta che menziona la shell e le distribuzioni. Mi sono imbattuto nella domanda perché sto risolvendo i problemi PATH nei contenitori Ubuntu. E il "percorso predefinito" dipenderà dalla shell (bash, sh, ecc.) E dal fatto che sia caricata in modo interattivo o meno e che si tratti di una shell di accesso. Non è una risposta semplice. Complimenti per la menzione delle stringhe codificate nel binario.
init_js

1

Per vedere il percorso predefinito usa ciò che è menzionato nelle risposte:

echo $PATH

Per modificare utilizzare:

gedit ~/.bashrc

Questa PATHvariabile predefinita è definita in /etc/enviroment.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.