Le cose semplici
PATH=$PATH:~/opt/bin
o
PATH=~/opt/bin:$PATH
a seconda che si desideri aggiungere ~/opt/binalla fine (da cercare dopo tutte le altre directory, nel caso in cui vi sia un programma con lo stesso nome in più directory) o all'inizio (da cercare prima di tutte le altre directory).
È possibile aggiungere più voci contemporaneamente. PATH=$PATH:~/opt/bin:~/opt/node/bino variazioni sull'ordinazione funzionano bene. Non inserire exportall'inizio della riga in quanto presenta ulteriori complicazioni (vedi sotto in "Note su shell diverse da bash").
Se il tuo PATHviene creato da molti componenti diversi, potresti finire con voci duplicate. Vedi Come aggiungere il percorso della home directory per essere scoperto da Unix quale comando? e Rimuovi voci duplicate $ PATH con il comando awk per evitare di aggiungere duplicati o rimuoverli.
A ~/binproposito, alcune distribuzioni inseriscono automaticamente il tuo PERCORSO.
Dove metterlo
Mettere la linea di modificare PATHin ~/.profile, o in ~/.bash_profileSe questo è quello che hai.
Nota che ~/.bash_rcnon viene letto da nessun programma ed ~/.bashrcè il file di configurazione delle istanze interattive di bash. Non è necessario definire le variabili di ambiente in ~/.bashrc. Il posto giusto per definire variabili d'ambiente come PATHè ~/.profile(o ~/.bash_profilese non ti interessano le shell diverse da bash). Vedi Qual è la differenza tra loro e quale dovrei usare?
Non inserirlo /etc/environmento ~/.pam_environment: questi non sono file shell, non è possibile utilizzare sostituzioni come quelle $PATHpresenti. In questi file, puoi solo sovrascrivere una variabile, non aggiungerla ad essa.
Potenziali complicazioni in alcuni script di sistema
Non è necessario exportse la variabile è già nell'ambiente: qualsiasi modifica del valore della variabile si riflette nell'ambiente.¹ PATHè praticamente sempre nell'ambiente; tutti i sistemi unix lo hanno impostato molto presto (di solito nel primo processo, in effetti).
Al momento dell'accesso, puoi fare affidamento sul fatto di PATHessere già nell'ambiente e di contenere già alcune directory di sistema. Se stai scrivendo uno script che potrebbe essere eseguito in anticipo durante l'impostazione di un qualche tipo di ambiente virtuale, potresti aver bisogno di assicurarti che PATHnon sia vuoto ed esportato: se PATHè ancora non impostato, allora qualcosa di simile PATH=$PATH:/some/directorysarebbe impostato PATHsu :/some/directorye il componente vuoto all'inizio significa l'attuale directory (come .:/some/directory).
if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi
Note su conchiglie diverse da bash
In bash, ksh e zsh, exportc'è una sintassi speciale, ed entrambi PATH=~/opt/bin:$PATHe export PATH=~/opt/bin:$PATHfanno anche la cosa giusta. In altre shell in stile Bourne / POSIX come dash (che si trova /bin/shsu molti sistemi), exportviene analizzato come un normale comando, il che implica due differenze:
Quindi nelle shell come dash, export PATH=~/opt/bin:$PATHimposta PATHla stringa letterale ~/opt/bin/:seguita dal valore PATHfino al primo spazio.
PATH=~/opt/bin:$PATH(un compito semplice) non richiede preventivi e fa la cosa giusta. Se vuoi usarlo exportin uno script portatile, devi scrivere export PATH="$HOME/opt/bin:$PATH", o PATH=~/opt/bin:$PATH; export PATH(o PATH=$HOME/opt/bin:$PATH; export PATHper la portabilità anche alla shell Bourne che non ha accettato export var=valuee non ha fatto l'espansione della tilde).
¹ Questo non era vero nelle shell Bourne (come nell'attuale shell Bourne, non nelle moderne shell in stile POSIX), ma è molto improbabile che si incontrino conchiglie così vecchie in questi giorni.