Yes, I could do something similar as what zshi does, but that seems like a suboptimal solution, because it would require a duplication (and indefinite maintenance) of the startup file processing logic in an independent codebase. As the logic is not trivial and has some potential pitfalls as well, it seems to me that implementing the option within Zsh would be the most sound (and perhaps simplest) solution from an engineering and long-term maintenance perspective. On Mon, Feb 13, 2023 at 9:34 PM Roman Perepelitsa < roman.perepelitsa@gmail.com> wrote: > On Mon, Feb 13, 2023 at 9:29 PM Bart Schaefer > wrote: > > > > Create a directory "virtualenv" with the appropriate configuration in > > virtualenv/{.zshenv,.zshrc,.zprofile,.zlogin} and use > > env ZDOTDIR=virtualenv zsh ... > > > > most likely you want virtualenv/.zshrc to be "source $HOME/.zshrc ; > > source xxx" and everything else to merely source the corresponding > > $HOME file. > > > > Adjust for absolute paths as needed. A bit of extra work required if > > you want to preserve an existing $ZDOTDIR before replacing it. > > zshi essentially automates this process. It also takes some care of > restoring `ZDOTDIR` before sourcing the real user rc files and > checking `[[ -o rcs ]]` afterwards. There is still one thing that > breaks when using zshi (or doing the same thing manually): global rc > files see the wrong `ZDOTDIR`. > > Roman. >