GNU/Linux >> Linux Esercitazione >  >> Linux

Come aggiungere in modo pulito a $ percorso?

Vorrei un modo per aggiungere elementi a $PATH, a livello di sistema o per un singolo utente, senza potenzialmente aggiungere lo stesso percorso più volte.

Uno dei motivi per volerlo fare è che le aggiunte possano essere fatte in .bashrc , che non richiede un login ed è anche più utile su sistemi che utilizzano (es.) lightdm , che non chiama mai .profile .

Sono a conoscenza di domande relative a come pulire i duplicati da $PATH, ma non voglio rimuovere i duplicati . Vorrei un modo per aggiungere percorsi solo se non sono già presenti.

Risposta accettata:

Supponiamo che il nuovo percorso che vogliamo aggiungere sia:

new=/opt/bin

Quindi, usando qualsiasi shell POSIX, possiamo testare per vedere se new è già nel percorso e aggiungilo se non lo è:

case ":${PATH:=$new}:" in
    *:"$new":*)  ;;
    *) PATH="$new:$PATH"  ;;
esac

Nota l'uso dei due punti. Senza i due punti, potremmo pensare che, diciamo, new=/bin era già nel percorso perché corrispondeva al modello su /usr/bin . Sebbene i PATH abbiano normalmente molti elementi, vengono gestiti anche i casi speciali di zero e uno elementi nel PATH. Il caso in cui il PATH inizialmente non ha elementi (essendo vuoto) è gestito dall'uso di ${PATH:=$new} che assegna PATH a $new se è vuoto. L'impostazione dei valori predefiniti per i parametri in questo modo è una caratteristica di tutte le shell POSIX:vedere la sezione 2.6.2 della documentazione POSIX.)

Una funzione richiamabile

Per comodità, il codice sopra può essere inserito in una funzione. Questa funzione può essere definita dalla riga di comando o, per averla permanentemente disponibile, inserita nello script di inizializzazione della shell (per gli utenti bash, sarebbe ~/.bashrc ):

pupdate() { case ":${PATH:=$1}:" in *:"$1":*) ;; *) PATH="$1:$PATH" ;; esac; }

Per utilizzare questa funzione di aggiornamento del percorso per aggiungere una directory al PERCORSO corrente:

pupdate /new/path

Linux
  1. Come fare in modo che `sudo` conservi il percorso $?

  2. Linux – Ldd non trova il percorso, come aggiungere?

  3. Come potrei aggiungere dir a $ PATH in Makefile?

  4. Come aggiungere il file .so a java.library.path in Linux

  5. Come aggiungere directory specifiche al percorso di ricerca aggiornatob (individuare)?

Come aggiungere un utente al gruppo in Linux

Come aggiungere una directory a PATH in Linux

Come aggiungere memoria esterna a ownCloud 9

Come aggiungere una directory a PATH in Linux [Suggerimento rapido]

Come aggiungere route su Linux

Linux:aggiungi una directory a PATH