我想要启动一个具有项目特定设置的交互式 zsh(在 cygwin 上):
- 来源
/etc/profile
- 来源
~/.profile
- 来源
$PROJECT_HOME/Setup.zsh
- 变得互动
我已经进行到第 3 步,但是 shell 就终止了。
我以前做过这种事,但我忘了怎么做了。我试着用谷歌搜索,但什么也没找到。可能是搜索词错误。
$PROJECT_HOME/Setup.zsh
当然,添加~/.profile
并不是解决方案,因为我们的想法是在 Windows 桌面上有多个启动图标来启动众多项目之一的 shell。
答案1
让你的快捷方式看起来像:
env PROJECT_HOME=~/projects/this zsh
env PROJECT_HOME=~/projects/that zsh
现在采购$PROJECT_HOME/Setup.zsh
工作可以顺利进行。
答案2
zsh 对此的支持不太好。我所知道的唯一方法是暂时覆盖$ZDOTDIR
到某个临时目录,然后将一个.zshrc
可以加载所需函数的目录粘贴到其中。以下是完整示例:
#!/usr/bin/zsh
dir=`mktemp -d /tmp/adevXXX`
# Preload the shell with all of the shell functions defined in
# build/envsetup.sh.
cat >$dir/.zshrc <<EOF
source $HOME/.zshrc
source build/envsetup.sh
EOF
ZDOTDIR=$dir zsh
rm -r $dir
答案3
你没有说你如何定义你所说的 多个启动图标,以及如何使用 shell 启动终端。例如,在我的平台上,我使用的是minnty
,你可以将某个桌面图标的启动命令输入到属性中,例如
C:\cygwin64\bin\mintty.exe -s 101,26 -e /usr/bin/dash -c "PROJECT=25 /usr/bin/zsh -i -l"
$PROJECT
在您的 .zshrc 中,您可以决定要加载哪个项目特定设置的值。
在这种方法中,我使用一个临时 shell(在我的情况下是 dash,因为它加载速度很快)来设置环境变量并最后调用 zsh 作为交互式登录 shell。
相同的方法也适用于其他终端仿真器,例如 ConEmu。