我的.zshenv
产生的输出仅在我的shell是交互式时才有用。
在其他情况下,当shell不是交互式时,必须隐藏此输出(即当我运行脚本时)。
如何禁止非交互式shell的.zshenv
输出?
P.S。我在下面添加了我当前的解决方案但对我来说似乎很苛刻。
答案 0 :(得分:1)
我补充说:
if [[ ! -o interactive ]]; then
exec 1>&-
exec 1<>/dev/null
fi
在我的.zshenv
文件的顶部,以关闭原始1
标准输出文件描述符并为其分配/dev/null
。
在底部,我补充道:
if [[ ! -o interactive ]]; then
exec 1>&0
fi
答案 1 :(得分:0)
My other answer在某些情况下效果不佳。
我将.zshenv
内容移至函数run
并为此函数输出添加了条件重定向:
function run() {
// .zshenv content
}
OUTPUT=1
if [[ ! -o interactive ]]; then
OUTPUT=3
eval "exec $OUTPUT<>/dev/null"
fi
run >& $OUTPUT
if [[ ! -o interactive ]]; then
eval "exec $OUTPUT>&-"
fi