我想启动 zsh 类似于
zsh -c 'my_prog option1 option2'
Run Code Online (Sandbox Code Playgroud)
但不是在运行该命令后退出,而是将我留在调用的 zsh 的属性上(而不是从它被调用的任何地方)。一个特殊的用例是在 screenrc 文件中,您可以执行以下操作:
screen -t my_prog 0 zsh -c 'my_prog opt1 opt2'
Run Code Online (Sandbox Code Playgroud)
运行该命令后,您将在那里留下一个外壳,而不是关闭。
Dar*_*all 32
并不是说我会建议这样做。
(sirius)~: zsh -c 'print hello; zsh -i'
hello
(sirius)~: echo $SHLVL
2
Run Code Online (Sandbox Code Playgroud)
您还可以使用 screen 和使用$STY变量玩其他技巧。
如果你想在单独的屏幕上从 zsh 运行某些东西,你可以检查 .zshrc 或 .zlogin 中的 $STY 变量。它是在格式中<PID>.<TTY>.<HOSTNAME>。
if [[ -n $STY ]] then
if [[ -f ~/.zsh-$STY[(ws:.:)2] ]] then
. ~/.zsh-$STY[(ws:.:)2]
fi
fi
Run Code Online (Sandbox Code Playgroud)
如果在屏幕中,并且如果~/.zsh-<TTY>(来自 $STY 变量)存在,则获取该源,然后继续您的快乐方式。您还可以在调用交互式 shell 之前设置环境变量。
> FOO=bar zsh -i
> env | grep FOO
FOO=bar
> RUNTHISCOMMAND=/path/to/script zsh -i
.zshrc:
if [[ -n $RUNTHISCOMMAND ]] then
$RUNTHISCOMMAND
fi
Run Code Online (Sandbox Code Playgroud)
将这些检查添加到您的 .zshrc/.zlogin 中。
gra*_*ion 15
我在这里找到了一个无需额外外壳即可工作的解决方案。添加:
if [[ $1 == eval ]]
then
"$@"
set --
fi
Run Code Online (Sandbox Code Playgroud)
到 .zshrc,然后调用 zsh
zsh -is eval 'your shell command here'
Run Code Online (Sandbox Code Playgroud)
非常适合一次启动大量 shell。
我eval "$RUN"在我的.zshrc. 我现在可以在没有额外 shell 的情况下运行命令:
RUN='my_prog opt1 opt2' zsh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29589 次 |
| 最近记录: |