web-dev-qa-db-fra.com

Modification de PATH avec une coquille de poisson

Je joue actuellement avec le shell de poisson et j'ai du mal à comprendre comment la variable PATH est définie. Pour ce que ça vaut, j'utilise aussi oh-my-fish .

Si je fais écho à mon chemin actuel, j'obtiens:

➜ fish echo $PATH
/usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/X11/bin /usr/texbin /Users/myname/.opam/system/bin

Regarder ~/.config/fish/config.fish Je vois la ligne suivante

set PATH /usr/local/bin $PATH /Users/myname/.opam/system/bin

Ma question est (et cette formulation reflétera probablement mon manque de connaissances sur le sujet): avant config.fish en cours de traitement, où est définie la variable PATH? c'est-à-dire: d'où viennent tous les chemins entre /usr/local/bin et /Users/myname/.opam/system/bin viens de?

35

Comme indiqué dans le tutoriel poisson officiel , vous pouvez modifier le $fish_user_paths variable universelle.

Exécutez une fois la ligne de commande suivante:

set -U fish_user_paths /usr/local/bin $fish_user_paths

Cela ajoutera /usr/local/bin en permanence sur votre chemin, et affectera également la session en cours et toutes les instances futures.

N'ajoutez pas cette ligne à votre config.fish fichier, car cela provoquerait le $fish_user_paths pour croître avec chaque instance de Shell.

71
Kasper

Comme tous les shells, fish hérite de son PATH de l'environnement dans lequel il est démarré. La façon dont cela est défini pour les shells de connexion diffère selon les systèmes d'exploitation - sous Linux, par exemple, /etc/login.defs contrôle le PATH initial défini pour tous les shells de connexion. Je ne sais pas comment cela est réglé sur OS X.

Ensuite, comme bash ou csh, les fichiers d'initialisation du Shell peuvent modifier le chemin. Pour les poissons sous OS X, il y a du code dans share/fish/config.fish pour charger les chemins à partir des fichiers de configuration de chemin OS X standard /etc/paths et /etc/paths.d/*. Il existe un code alternatif pour définir un chemin utile sur Solaris.

Il existe également du code pour récupérer les chemins de la variable universelle $fish_user_paths, qui est le bonne façon d'ajouter quelque chose à votre PATH et de le faire refléter sur tous les shells .

8
Zanchey