Dove è impostata la variabile $ PATH a livello di sistema?


10

Sto usando Ubuntu Desktop 14.04 e, come tale, sto usando la shell senza login. Quando apro il terminale della GUI, prima le sessioni della shell senza login leggono i seguenti file di avvio:

/etc/bash.bashrc
~/.bashrc

Le shell non di accesso ereditano l'ambiente dal processo padre, che è una shell di accesso, quindi la sessione legge anche i seguenti file di avvio:

/etc/profile
~/.bash_profile

Tuttavia, non riesco a trovare il $PATHper i percorsi a livello di sistema come /bin, /sbin, /usr/bin, /usr/sbin, ambientato in uno di questi file. Dov'è il $PATHset per queste directory?

Risposte:


16

Il sistema (predefinito) PATHè impostato nel /etc/environmentfile.

$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

È fondamentalmente il posto dove salvare le variabili d'ambiente globali.


+1, tuttavia ti capita di sapere se $PATHè ereditato dalla shell di accesso principale o se viene ricaricato da ogni bashistanza?
kos,

@kos Tutti i processi figlio ereditano l'ambiente dalla shell genitore a meno che ovviamente non vengano eseguiti in un ambiente modificato ..
heemayl

Ho notato che la shell non sembra espandere la $HOMEvariabile. Ad esempio, l'aggiunta $HOME/.composer/vendor/bina PATHin /etc/environmentnon consente l'esecuzione di file binari in questa directory senza prefisso percorso. L'uso ~/.composer/vendor/binnon funziona neanche. Sto trovando necessario aggiungere il percorso assoluto, ad esempio: /home/vagrant/.composer/vendor/bin. Questo sembra correlato (anche se non spiega questo comportamento): askubuntu.com/questions/402353/…
Ben Johnson

2
@BenJohnson Questo è semplicemente perché /etc/environment(e ~/.pam/environment) viene letto dal pam_envmodulo PAM, non dalla shell o da qualsiasi altra cosa che capisca le variabili shell / ambiente; lo stesso vale per l' ~espansione. Quindi, è necessario utilizzare il percorso assoluto lì.
heemayl
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.