2013-05-15 7 views
6

Ho alcune domande su questo $ PATH in Linux.

So che racconta la shell quali directory per la ricerca di file eseguibili, quindi:

  1. Che cosa significa una variabile di ambiente?
  2. Come modificare il percorso? e si consiglia di cambiarlo?
  3. SE lo cambio quali sono le conseguenze?

risposta

8

Per ottenere il vostro percorso attuale $PATH tipo di variabile in:

echo $PATH 

Racconta la shell dove cercare i binari.

Sì, è possibile modificarlo, ad esempio aggiungere alla cartella $PATH con gli script personalizzati.

Quindi: Se gli script sono in /usr/local/myscripts eseguirli si dovrà digitare un percorso completo dello script: /usr/local/myscripts/myscript.sh Dopo aver modificato la variabile $PATH si può semplicemente digitare myscript.sh per eseguire script.

Ecco un esempio di $PATH da RHEL:

/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/user/bin

Per modificare il $PATH è necessario modificare ~/.profile (o ~/.bash_profile) per l'impostazione utenteglobale in /etc/profile.

Una delle conseguenze di avere delle variabili non corrette $PATH è che la shell non sarà in grado di trovare ed eseguire programmi senza uno $PATH completo.

+0

Oh mio Dio, hai chiarito tutto per me con la tua dichiarazione -> "Quindi: se i tuoi script sono in/usr/local/myscripts per eseguirli dovrai digitare un percorso completo per lo script:/usr/local/myscripts/myscript.sh Dopo aver modificato la variabile $ PATH puoi semplicemente digitare myscript.sh per eseguire lo script. " Grazie mille – ruggedbuteducated

+0

e mentre ci sei, puoi anche spiegare brevemente cosa è questo -> ~/.bashrc – ruggedbuteducated

+0

@ruggedbuteducated solo i comandi bash che vengono eseguiti dopo il tuo login. Guarda in man bash e cerca bashrc. – Chris

6

In primo luogo, si è corretto nel proprio estratto di cosa fa $ PATH. Se dovessi romperlo in qualche modo (come per il tuo terzo punto), dovrai digitare manualmente/usr/bin/xyz se vuoi eseguire un programma in/usr/bin dal terminale. A seconda di come funzionano i singoli programmi, questo potrebbe rompere alcuni programmi che invocano altri, poiché si aspettano di essere in grado di eseguire ls o qualcosa del genere.

Quindi, se dovessi giocare con $ PATH, ti suggerirei di salvarlo da qualche parte prima. Usare l'istruzione della riga di comando

echo $PATH > someRandomFile.txt 

per salvarlo nella someRandomFile.txt

È possibile modificare $ PATH utilizzando il comando di esportazione. Quindi

export PATH=someNewPath 

TUTTAVIA, questo sostituirà completamente $ PATH con someNewPath. Dal momento che gli elementi di percorso sono separati da un ":", è possibile aggiungere elementi ad esso (meglio non rimuovere, vedi sopra) eseguendo

export PATH=$PATH:newPath 

Il fatto che si tratta di una variabile di ambiente significa che i programmi possono scoprire il suo valore, cioè è qualcosa che viene impostato sull'ambiente in cui è in esecuzione il programma. Altre variabili ambientali includono cose come la directory corrente e l'indirizzo del proxy corrente.

Problemi correlati