kReoSo
kReoSo

Reputation: 209

PATH variable in .zshenv or .zshrc

My setup is zsh 5.0.5 in arch linux

I have set the PATH variable as below in .zshenv

typeset -U path
path=(~/bin $path)
DW=$HOME/Downloads

but it didn't work. print $PATH shows only

/usr/local/bin:/usr/bin:/usr/bin/vendor_perl:/usr/bin/core_perl

.zshenv was read, because I could see DW variable is set. Only PATH variable isn't set. And what I don't understand is, after rename the .zshenv to .zshrc, PATH variable just works as intended.

Need any special treatment setting environment variables in .zshenv?

Upvotes: 13

Views: 38999

Answers (3)

jooks
jooks

Reputation: 1287

It seems that when you have macos or some linux distros there is a canonical solution to the problem which involves /etc/paths or /etc/paths.d. You should be letting /usr/libexec/path_helper construct your path for you using configuration files.

This immediately solved the problem in all places for me.

Upvotes: 1

Adrian Günter
Adrian Günter

Reputation: 911

I just encountered this problem myself, and the real answer is that Zsh on Arch sources /etc/profile – which overwrites and exports PATHafter having sourced ~/.zshenv.

See: https://wiki.archlinux.org/index.php/Zsh#Configuration_files

Upvotes: 25

David Bernard
David Bernard

Reputation: 1640

I've got the same problem. The cause was my .zshrc (fresh install of oh-my-zsh) override PATH (ignoring existing value):

export PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl"

To fix, I comment the line.

Upvotes: -1

Related Questions