2009-11-11 18:48:39 +0000 2009-11-11 18:48:39 +0000
141
141

Dove viene impostato $PATH in OS X 10.6 Snow Leopard?

Digito echo $PATH sulla riga di comando e ottengo

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

Mi sto chiedendo dove questo venga impostato, dato che il mio file .bash_login è vuoto.

Sono particolarmente preoccupato che, dopo aver installato MacPorts, ha installato un mucchio di spazzatura in /opt. Non credo che quella directory esista nemmeno in una normale installazione di Mac OS X.

Aggiornamento: Grazie a jtimberman per aver corretto la mia dichiarazione echo $PATH

Risposte (7)

161
161
161
2009-11-11 20:57:32 +0000

Quando bash si avvia legge i seguenti file ogni volta che si fa il login. Per gli scopi di OS X, questo significa ogni volta che si apre una nuova finestra di Terminal.

/etc/profile
~/.bash_profile
~/.bash_login (if .bash_profile does not exist)
~/.profile (if .bash_login does not exist)

Quando si avvia una nuova shell digitando bash sulla linea di comando, legge .bashrc

OS X usa anche ~/.MacOSX/environment.plist per impostare altre variabili di ambiente, inclusi i percorsi se necessario.

Infine, /etc/paths e /etc/paths.d sono letti anche dalla shell.


/opt/local/bin ecc. sono aggiunti in ~/.tcshrc da MacPorts. Assicuratevi anche di guardare in ~/.cshrc.

25
25
25
2011-03-25 18:07:37 +0000

Seriamente, Leopard ci ha dato un nuovo modo per aggiungere il percorso. Basta creare un file contenente la parte di percorso che si vuole aggiungere, e metterlo in /etc/paths.d

Un rapido esempio per fare questo in un solo passo è:

echo "/some/path/to/add" >> /etc/paths.d/somefilename

Altrimenti, puoi semplicemente andare in /etc/paths.d e mettere il file direttamente lì. In entrambi i casi, qualsiasi parte di percorso nei file in quella directory sarà aggiunta al percorso predefinito.

Questo funziona anche per manpath.

Ecco un link per maggiori dettagli: ars technica: come aggiungo qualcosa a PATH in snow leopard?

Una seconda nota: MacPorts mette tutto nella directory opt proprio perché non è usata dalla roba di Apple. In questo modo non va in conflitto. La loro guida (scritta in modo eccellente, BTW) ha una spiegazione del perché usa opt e come cambiare quel default se volete. Guida MacPorts

4
4
4
2009-11-11 19:07:28 +0000

Per mostrare il tuo percorso, echo $PATH.

echo $PATH

Per impostare il tuo percorso, modifica ~/.bash_profile, non ~/.bash_login.

3
3
3
2012-02-07 19:36:18 +0000

C'è anche il percorso determinato da ssh.

Confronta echo $PATH con ssh localhost 'echo $PATH'. Poiché ssh non legge /etc/profile, /usr/libexec/path\helper non viene eseguito e quindi /etc/paths viene saltato. Ora prova ssh localhost 'source /etc/profile; echo $PATH'. I percorsi dovrebbero essere più vicini. Le rimanenti differenze saranno probabilmente dovute alla modifica dei percorsi nel tuo .bash\profile (che è anche saltato da ssh) e .bashrc (che è letto da ssh).

Se vuoi che il percorso di ssh sia simile a quello del tuo normale terminale, potresti aggiungere source /etc/profile al tuo .bashrc.

2
2
2
2013-06-01 09:50:21 +0000

Potrebbe essere definito in entrambi:

  • variabili di sistema - /etc/paths
  • variabili utente - vedi la spiegazione di @Steve Folly
1
1
1
2009-11-11 19:13:39 +0000

In realtà è memorizzato nel tuo file .profile invece di .bash_login ed è comune che MacPorts usi questo invece del file .bash_login.

Anche la cartella /opt è solitamente creata da MacPorts e memorizza i suoi file in questa cartella.

1
1
1
2012-06-26 01:40:17 +0000

Per quanto riguarda docs per l'utilità /usr/libexec/path_helper, i componenti iniziali per $PATH sono stati presi da /etc/paths e per default sembrano

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

per OS-X Snow Leopard