Come posso ripristinare $ PATH al suo valore predefinito in Ubuntu?


31

Ho accidentalmente disinserito tutte le directory di $PATHmentre cercavo di aggiungerne una nuova ~/.bashrc. Ho aperto una nuova finestra del terminale mentre stavo modificando e ora $PATHè vuoto. Sono preoccupato se eseguo l'avvio da un'altra unità per scoprire $PATHche non sarò in grado di riavviare in questa unità.

Fondamentalmente, qual è il risultato predefinito di echo $PATH?


1
Commenta o correggi quella linea di esportazione e dovresti andare bene.
Pantera

~/.bashrcè il posto sbagliato per impostare le variabili di ambiente però. Dovresti farlo ~/.profileinvece.
geirha,

Sì, l'ho capito. PERCORSO sta ancora bene nell'altra finestra del terminale che era aperta prima di quella nuova, quindi basta correggere la linea di esportazione aggiungendo :$PATHalla fine ripristinato il PERCORSO. E sì, ~/.profilec'è il codice per "impostare PATH in modo che includa il cestino privato dell'utente se esiste" cioè$HOME/bin
Cee

Risposte:


35

La risposta alla tua domanda è:

PATH=$(getconf PATH)

e funziona su qualsiasi sistema conforme a POSIX. La risposta selezionata è il modo corretto di aumentare il percorso senza cancellare il contenuto esistente precedente. Se usi bash, potresti considerare:

PATH+=:$mynewdir

Ho avuto problemi con l'uso di molti comandi ( sed: No such file or directorytipo di problema) dopo aver impostato accidentalmente il mio PATH su nulla durante un processo molto lungo (ovvero, non sono riuscito a riavviare). Non potevo usare getconf. Per ripristinare il mio percorso, ho usato $(export $(cat /etc/environment)":/usr/bin/additional:/usr/bin/paths"). Per i curiosi: /etc/environmentè dove la variabile PATH è inizialmente impostata in molti gusti Linux.
Nick Bull,

2
Quel lavoro mi sorprenderebbe. Forse "export" senza le cose "$ (...)" circostanti potrebbe, ma sarà qualunque cosa accada. Usa "fonte / etc / ..". Ad ogni modo, prova "/ usr / bin / getconf" se non riesci nemmeno a trovare "getconf".
Bruce,

Preferisci la tua idea finale usando il percorso completo molto più del mio con il senno di poi! Grazie per la risposta
Nick Bull,

1
Se la variabile PATH è vuota, PATH=$(getconf PATH)non sarà utile, ma si tradurrà solo inbash: getconf: No such file or directory
Max N

1
Se PATH è vuoto, notare il commento sopra: provare "/ usr / bin / getconf". Se ciò non funziona, è necessario sapere dove il sistema blocca i comandi POSIX e utilizzare quella directory.
Bruce,

17

Puoi trovarlo su / etc / environment:

$ /usr/bin/cat /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Quindi, basta fonte:

$ source /etc/environment 
$ echo $PATH

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

1
cat non funzionerà in questo modo come nella tua risposta, poiché non esiste $ PATH
Josef Klimuk

Hai ragione. Ho appena modificato la risposta. Grazie!
Manuel Jesus Rodriguez,

8

Aggiunta: $ PATH alla fine della linea di esportazione risolto il problema, ad es export PATH=<directory to be added>:$PATH

Aggiungo questa riga al ~/.bash_rcfile anziché al ~/.profilefile in modo da poter vedere immediatamente l'effetto in un nuovo terminale e per altri motivi sulla base delle informazioni qui: https://superuser.com/questions/176404/linux-bash-not- carico-profilo-a-new-session

Per me, l'output predefinito di echo $PATHprima di aggiungere la nuova directory è:

/ Usr / lib / lightdm / lightdm: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games


3

Il percorso predefinito è

/home/_username_/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games 

Spero che questo ti aiuti


Ciò differisce dal mio PERCORSO predefinito. Vedi sotto.
Cee
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.