Comment puis-je ajouter un chemin d'accès à la variable d'environnement PATH?

11

Je veux ajouter un chemin d'accès à la PATHvariable d'environnement?

J'ai essayé avec export PATH=/mypath:$PATHet ça marche. Mais la prochaine fois que je démarrerai le Terminal, mon nouveau chemin d'accès ne sera plus dans la PATHvariable d'environnement.

Comment puis-je ajouter un chemin d'accès à la PATHvariable d'environnement? et il devrait être là aussi la prochaine fois que je démarre le terminal.


J'ai encore des problèmes avec ça, l'astuce qui fonctionnait auparavant ne semble plus fonctionner.

J'ai essayé avec:

echo 'export GRADLE_HOME=/Users/jonas/gradle-1.2/' >> ~/.profile
echo 'export PATH=GRADLE_HOME/bin:$PATH' >> ~/.profile

pour ajouter deux variables d'environnement. Ensuite, mon ~/.profilefichier a ce contenu:

export GRADLE_HOME=/Users/jonas/gradle-1.2/
export PATH=GRADLE_HOME/bin:$PATH

Mais lorsque je démarre une nouvelle fenêtre de terminal et que gradleje tape (la commande à laquelle j'ai ajouté PATH), je reçois un message indiquant que la commande n'existe pas. Si j'exécute la commande, /Users/jonas/gradle-1.2/bincela fonctionne très bien!

Jonas
la source
S'il vous arrive de gâcher quelque chose, voir aussi: Réinitialiser votre variable PATH
Jari Keinänen
1
L'affectation à PATH (deuxième exportation) devrait être avec $ GRADLE_HOME
nohillside

Réponses:

5

echo 'export PATH=/my/path:$PATH' >> ~/.bash_profile devrait faire l'affaire!

Si vous utilisiez echo 'export PATH=/my/path:$PATH' > ~/.bash_profile, ou une telle variation, vous écraseriez le contenu de votre profil!

Yasyf
la source
9

OSX lit les fichiers suivants dans l'ordre lors de l'ouverture d'un terminal:

/etc/profile
~/.bash_profile
~/.bash_login   
~/.profile     

Placez donc votre ajout de chemin dans l'un d'eux. Je mets normalement des ajouts dans~/.bash_profile

robzolkos
la source
2
Merci, j'ai utiliséecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas
3

En plus des endroits mentionnés par @RobZolkos, le shell de connexion recherche également /etc/pathsles fichiers à l'intérieur /etc/paths.d/. Une entrée de chemin par ligne dans ces fichiers.

Voir /etc/profileet la page de manuel pour path_helper.

Harald Hanche-Olsen
la source
OK merci! mais le plus gros problème était de savoir comment ajouter le chemin. Mais j'ai trouvéecho 'export PATH=/mypath:$PATH' >> ~/.profile
Jonas
@Jonas: J'ai réalisé que votre problème était résolu. Ma réponse était destinée aux futurs lecteurs, afin qu'ils puissent voir toutes les options qui s'offrent à eux.
Harald Hanche-Olsen
2

Ancienne question mais, pour les utilisateurs de MacOS X Catalina:

Créer / éditer ~/.zshenv:

# comment for yourself
PATH="$PATH:to/your/path"

Notez que modifier PATHdans ~/.zprofileou ~/.zshrcest incorrect, il devrait être ~/.zshenv.

Si vous devez ajouter quelque chose PATH, créez / modifiez davantage ~/.zprofile:

# apply the prepend to PATH
[[ -r ~/.zshenv ]] && source ~/.zshenv
# remove duplicate in PATH
typeset -U PATH

Référence: http://zsh.sourceforge.net/Intro/intro_3.html

Il pleut
la source
Que voulez-vous dire par «Si vous devez ajouter au PATH» et pourquoi cela ne peut-il pas être fait .zshenvégalement?
nohillside
@nohillside: Désolé pour ma mauvaise grammaire, mais bonne question. Si vous essayez de préfixer quelque chose à l' PATHen ~/.zshenvpar PATH="to/your/path:$PATH", sans les lignes ~/.zprofile, il ne fonctionnera pas. Quelque chose appellera path_helperceux-ci /usr/local/bin/:/usr/bin:...au premier plan PATH.
pleut le
En bref, il s'agit de charger l'ordre. path_helpersera exécuté après ~/.zshenvmais avant ~/.zproflie. Et d'après mon étude d'aujourd'hui, je recommanderais d'utiliser un lien symbolique au lieu de modifier PATH, ce qui est beaucoup plus simple.
pleut le
0

Insérez dans .bashrc ces lignes de code:

function pathadd {              # Add new element to PATH
  if ! echo $PATH | egrep -q "(:|^)$1(:|$)"
  then if [ "$2" = "after" ]
       then PATH="$PATH:$1"
       else PATH="$1:$PATH"
       fi
  fi
}

puis tapez une commande comme: pathadd /opt/local/binou pathadd /opt/local/bin after.

Maurizio Loreti
la source
Notez les deux fonctions dans init- github.com/fink/base-files/blob/master/init.sh.in de
fd0