从 tcsh,如果我尝试:
exec /home/path/to/my/zsh
Run Code Online (Sandbox Code Playgroud)
它有效(我输入了 Zsh shell)
但如果我尝试
exec -c /home/path/to/my/zsh
Run Code Online (Sandbox Code Playgroud)
我得到:
-c Command not found
Run Code Online (Sandbox Code Playgroud)
如何切换到我的 Zsh shell 并从“空白石板”启动它?(即没有从 结转的环境变量tcsh)。
不知道你为什么要这样做,但你可以这样做:
exec env -i /home/path/to/my/zsh
Run Code Online (Sandbox Code Playgroud)
可能很多事情都无法正常工作,因为您将丢失一些基本的环境变量,例如$PATH,$HOME或$TERM。
如果您想将一些变量列入白名单并删除其余变量:
exec env -i HOME="$HOME" TERM="$TERM" /home/path/to/my/zsh
Run Code Online (Sandbox Code Playgroud)
如果要恢复tcsh启动时的环境,可以将其插入到 的开头~/.tcshrc:
sh -c 'export -p' > ~/.initial-env
Run Code Online (Sandbox Code Playgroud)
然后执行以下操作:
exec env -i sh -c ". $HOME/.initial-env; exec /path/to/zsh"
Run Code Online (Sandbox Code Playgroud)
即tcsh启动时保存环境,执行 zsh 时恢复环境。
如果您想要的是将您的外壳更改为zsh您不必执行chsh(或未zsh安装或安装的已使用 20 年),(带回 15 多年前的内存(天哪!)当我处于完全相同的情况(尽管使用csh而不是tcsh)),您可以将您的内容替换为~/.login:
setenv SHELL /path/to/zsh
exec $SHELL -l
Run Code Online (Sandbox Code Playgroud)
并删除您的 .tcshrc
设置$SHELL指定您的 shell首选项(即应用程序喜欢xterm或vi...将在需要为您启动 shell 时启动)。
把它放在你的~/.login应该确保它只完成一次。希望tcsh自从您更改$SHELL. 将环境变量定义放在~/.loginor~/.zprofile或 中应该无关紧要~/.profile。由你决定。
tcsh -l退出前测试。
| 归档时间: |
|
| 查看次数: |
2016 次 |
| 最近记录: |