web-dev-qa-db-fra.com

Ajout d'une nouvelle entrée à la variable PATH dans ZSH

J'utilise zsh et j'essaie d'ajouter une nouvelle entrée (/home/david/pear/bin) à la variable PATH mais je ne sais pas comment.

Ce qui me déroute le plus, c'est qu'il n'y a pas une seule référence à une variable PATH dans mon fichier ~/.zshrc, mais que echo $PATH renvoie:

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

Donc, une variable PATH est définie quelque part.

116
David Barreto

Ici:

export PATH=/home/david/pear/bin:$PATH
140
Linuxios

En fait, utiliser ZSH vous permet d’utiliser un mappage spécial de variables d’environnement. Donc, vous pouvez simplement faire:

# append
path+=('/home/david/pear/bin')
# or prepend
path=('/home/david/pear/bin' $path)
# export to sub-processes (make it inherited by child processes)
export PATH

Pour moi, c'est une fonctionnalité très soignée qui peut être propagée à d'autres variables. Exemple:

typeset -T LD_LIBRARY_PATH ld_library_path :
117
ony

Vous pouvez ajouter à votre PATH de manière minimale. Pas besoin de parenthèses, sauf si vous ajoutez plus d'un élément. De plus, il n'a généralement pas besoin de guillemets. Donc le moyen simple et rapide d’ajouter est:

_path+=/some/new/bin/dir
_

Usage courant

Ensuite, le modèle courant pour tester un nouveau script/exécutable devient:

_path+=$PWD/.
# or
path+=$PWD/bin
_

Cette syntaxe minuscule utilise path en tant que tableau , mais affecte également son équivalent du partenaire majuscule, PATH (auquel elle est "liée" via typeset).

(Notez que no _:_ est nécessaire/voulu comme séparateur .)

Tidbits connexes

Traiter path de cette façon (en tant que tableau) signifie également: inutile de faire un rehash pour obtenir les commandes nouvellement tracées.

Regardez également vared path_ COMME MOYEN DYNAMIQUE D’ÉDITER path et d’autres choses.

path ne vous intéresse que pour cette question, mais comme nous parlons d’exportations et de tableaux, notez que les tableaux ne peuvent généralement pas être exportés.

Vous pouvez même empêcher à PATH de prendre des entrées en double (voir this et this ):

_typeset -U path
_
20
Micah Elliott

une doublure, sans ouvrir le fichier ~/.zshrc

echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc

ou

echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc

Pour voir l'effet, faites source ~/.zshrc dans le même onglet ou ouvrez un nouvel onglet.

19
Siva Praveen

OPTION 1: Ajoutez cette ligne à ~/.zshrc:

export "PATH=$HOME/pear/bin:$PATH"

Ensuite, vous devez exécuter source ~/.zshrc pour que vos modifications soient prises en compte OR fermez cette fenêtre et ouvrez-en une nouvelle.

OPTION 2: exécutez-le dans la console du terminal pour ajouter ce chemin uniquement à la session en cours dans la fenêtre du terminal. Lorsque vous fermez la fenêtre/session, il sera perdu.

8
Dimitar
  1. Chemin ajouté à ~/.zshrc

    Sudo vi ~/.zshrc

    ajouter un nouveau chemin

    export PATH="$PATH:[NEW_DIRECTORY]/bin"
    
  2. Mettre à jour ~/.zshrc

    Enregistrer ~/.zshrc

    source ~/.zshrc

  3. Vérifier le chemin

    echo $PATH

2
saneryee