How to specify a custom path for my .zshrc file?

2020-08-17 18:21发布

问题:

I'm trying to move .zshrc to a folder where I keep this kind of files synced with Github.

But now whenever I start a zsh session it doesn't use that config file.

Assuming I changed the file to ~/.dotfiles how can I add ~/.dotfiles/.zshrc to the PATH(?!) to make zsh start with that config?

Doing source ~./dotfiles/.zshrc only works for that session. Doesn't work anymore if I close the terminal.

回答1:

You can symlink:

ln -s /path/to/original /path/to/symlink

For the zshrc you can do something like:

ln -s ~/.dotiles/.zshrc ~/.zshrc


回答2:

One alternative to a symlink is to put this in ~/.zshenv:

ZDOTDIR=~/.dotfiles

If you want .zshenv in ~/.dotfiles as well, you can look into setting ZDOTDIR in one of the global configuration files (/etc/zshenv is a good choice).



回答3:

Alternatively, you can do what I do and use GNU Stow. I've got my dotfiles in a repository, one subdirectory per category, like so:

dotfilerepo/zsh/.zshrc
dotfilerepo/zsh/.zlogin
dotfilerepo/git/.gitconfig
dotfilerepo/vim/.vimrc

then I can cd into repo and do stow zsh and it'll create a symlink from ~/.zshrc to repo/zsh/.zshrc, another from zsh/.zlogin to ~/.zlogin. stow vim to create symlinks from the vim subdirectory to ~, etc.

I've got a script, install-linkfarm, that does all the stow commands so when I move onto a new machine, I clone my repo, cd to it and run install-linkfarm and am good to go.



回答4:

You can put this in ~/.zshrc, even as its entire contents:

if [ -r ~/.dotfiles/.zshrc ]; then
    source ~/.dotfiles/.zshrc
fi


回答5:

Please use the export command mentioned below to solve your problem.

export ZDOTDIR=$HOME/.dotfiles


回答6:

In Linux, you can check if your zsh is loading /etc/zsh/zshrc, and edit it.

If that's the case, redirect this to your custom script by adding:

sh $HOME/.dotfiles/zshrc


回答7:

Here is an interesting hack that doesn't require you to use sym-links. In your .xsession, (or .*wmrc) have the following:

xterm -e 'zsh -c ". ~/.dotfiles/.zshrc; zsh"'.

instead of just:

xterm
Make sure to put the -e at the end after all of your other xterm options.



标签: zsh