如果我在登录shell中,我试图看看命令的输出是什么,而不必进入登录shell。我尝试了几种变体
zsh --login -c "alias"
但我的别名都没有显示出来; --login
和-c
不兼容吗?
答案 0 :(得分:1)
要测试-x
和普通登录shell之间的区别,您可以/应该添加zsh -x --login -c "alias"
选项以查看shell的内容。
当我运行/etc/zprofile
时,它会处理zsh -x --login
。
当我运行/etc/zprofile
时,它会处理/etc/zshrc
和zsh
。
我通常不会使用~/.zprofile
,因此我没有任何个性化的个人资料或启动文件,但似乎可能寻找(但在我的情况下,找不到) ~/.zshrc
和$ echo "echo in .zprofile" > ~/.zprofile
$ echo "echo in .zshrc" > ~/.zshrc
。
我创建了这些文件的简单版本:
-c
果然,它们已被处理完毕。此外,--login
.zprofile
命令处理.zshrc
但未处理-c "alias"
文件。
因此,在--login
之后使用/etc/zshrc
会抑制~/.zshrc
和zsh --login -c "[ -f /etc/zshrc ] && . /etc/zshrc; [ -f ~/.zshrc ] && . ~/.zshrc; alias"
的处理。如果你想要那些被执行的东西,你需要使用类似的东西:
-x
使用-
调试登录处理通常是提供信息。
现代shell提供命令行选项以引发登录处理,这很好。我仍然有一个程序(我不再使用它)以旧式方式运行登录shell,在argv[0]
中的shell名称之前添加-ksh
。因此,运行login
将触发登录处理; -
程序将在开始时使用{{1}}运行登录shell。