J'utilise zsh
comme shell et j'essaye de configurer mon environnement.
Je définis généralement ma $JAVA_HOME
variable en créant un fichier:
/etc/profile.d/java.sh
avec le contenu suivant
export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH
puis je me déconnecte et me reconnecte, et tout fonctionne, mais pour une raison quelconque, la PATH
variable n'est pas définie. Il reconnaît JAVA_HOME
, mais pas le nouveau PATH
, voir cet extrait de terminal:
~ echo $JAVA_HOME
/usr/lib/jvm/jdk1.8.0_05
~ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
et je l'ai confirmé en essayant d'exécuter une commande depuis le jvm
~ java -version
zsh: command not found: java
le PATH
ne comprend pas le $JAVA_HOME
comme il se doit. y a-t-il autre chose que je devrais vérifier?
J'ai vérifié que si je lance:
source /etc/profile.d/java.sh
tout fonctionne correctement et mes variables sont définies comme elles le devraient, mais les scripts ne devraient-ils pas /etc/profile.d
s'exécuter automatiquement?
environment-variables
zsh
Rodrigo Sasaki
la source
la source
~/.profile
et de placer les variables à la place? Il se peut que celaPATH
soit écrasé ailleurs dans/etc/profile.d/
.Réponses:
De mon point de vue, la meilleure façon est d'ajouter les lignes suivantes au
~/.zshrc
fichier (si vous ne l'avez pas déjà, alors créez-le):Ensuite, redémarrez votre
zsh
, ou exécutez simplementsource ~/.zshrc
et votre CHEMIN devrait être exactement comme vous le souhaitez.Ou, si vous souhaitez effectuer la modification à l'échelle du système, ajoutez le code précédent à la fin du
/etc/zsh/zshenv
fichier.Mais dans tous les cas, ne l'utilisez pas
/etc/profile.d
pour exécuter automatiquement des scripts danszsh
. Ce répertoire n'est utile que pour lebash
shell, paszsh
comme dans votre cas. Pour comprendre cela, ouvrez le/etc/profile
fichier, qui est un fichier d'initialisation bash et en aucun cas un fichier d'initialisation zsh , et vous verrez quelque part à la fin du fichier:Ainsi, vos scripts à partir du
/etc/profile.d
répertoire ne s'exécuteront automatiquementzsh
que si vous ajoutez le code précédent dans un fichier d'initialisation zsh, comme/etc/zsh/zprofile
par exemple, ou source/etc/profile
dans un/etc/zsh/zprofile
fichier.la source
~/.zprofile
-être mieux que ça~/.zshrc
.Je trouve que tout placer dans un seul
.zshenv
fichier devient rapidement difficile à gérer. Je recommande d'installer oh-my-sh , puis de placer diverses personnalisations (vars env, fonctions) dans le.oh-my-sh/custom/
répertoire sous forme de.zsh
fichiers séparés .J'ai également découvert que cette approche fonctionne parfaitement lors de la transformation en machine lors de la modification de variables env telles que
PATH
. De plus, cela fonctionne très bien avec vcsh pour garder les personnalisations sauvegardées et synchronisées.la source
~/.ssh/config
Depuis que
JAVA_HOME
c'est défini, vous avez confirmé que ces scripts proviennent automatiquement, n'est-ce pas?La seule explication logique est que cela
PATH
est défini plus tard d'une manière ou d'une autre. Il devrait être défini à l'origine par PAM qui lit/etc/environment
, et pour autant que je sache, cela se produit avant que les/etc/profile.d/*.sh
fichiers ne proviennent. Il est possible que zsh fonctionne différemment de bash à cet égard.la source
Je viens de rencontrer ce problème localement après avoir exécuté les mises à jour. On dirait que le problème racine est que Drush ne sait pas où trouver une copie légitime de php qui inclut pdo. Heureusement, il prend en charge le stockage de ce chemin dans une variable d'environnement, donc je l'ai fait sur la ligne de commande:
Cela a résolu le problème, j'ai donc modifié .zshrc et ajouté cela au fichier, problème résolu.
la source
.zshrc
soit utilisé, la même chose que la première réponse ?