在ksh ENV脚本中检测交互式shell

Dav*_*ron 5 unix shell ksh

确定给定的ksh调用是否正在运行交互式shell的首选方法是什么?

我在一个ENV文件中有一些命令,我想跳过非交互式ksh调用(例如,在执行shell脚本时).

我见过建议范围:

if [[ $- = *i* ]]; then
    # do interactive stuff
fi
Run Code Online (Sandbox Code Playgroud)

... .kshrc除非使用这个神秘的咒语确定壳是交互式的,否则甚至不采购:

ENVIRON=$HOME/.kshrc                                    export ENVIRON
ENV='${ENVIRON[(_$-=1)+(_=0)-(_$-!=_${-%%*i*})]}'       export ENV
Run Code Online (Sandbox Code Playgroud)

小智 5

我发现检查 $- 变量的 'i' 标志是 ksh 中的最佳方法。

if [[ $- = *i* ]]; then
    #do interactive stuff     
fi
Run Code Online (Sandbox Code Playgroud)


gra*_*ity 3

bash里面,经常会用到这两种方法~/.bashrc

但我不知道如何在 ksh 中做到这一点。