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

标签 shell unix ksh

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

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

我看到建议测距 from :

if [[ $- = *i* ]]; then
    # do interactive stuff
fi

...甚至不采购 .kshrc除非使用这个神秘的 incantation 确定 shell 是交互式的:
ENVIRON=$HOME/.kshrc                                    export ENVIRON
ENV='${ENVIRON[(_$-=1)+(_=0)-(_$-!=_${-%%*i*})]}'       export ENV

最佳答案

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

if [[ $- = *i* ]]; then
    #do interactive stuff     
fi

关于shell - 在 ksh ENV 脚本中检测交互式 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/945302/

相关文章:

c - 杀死 fork 的子进程会杀死 SIGCHLD 处理程序中的父进程

Git:服务器上多个用户的 repo

linux - 需要 Linux shell 脚本中 for 循环的帮助

linux - 如何使用 find、ls 命令根据数组中的条目显示文件名?

powershell - 使用 powershell 在现有 CSV 中添加列 CSV

shell - 使用 zsh 中内置的源读取脚本中的位置参数

shell - 如何在 Jenkinsfile 中执行 Shell 脚本?

bash - 在 Linux 中查找 JAR 中存在的类文件

bash - 如何编写调用带有构造文件名参数的 grep 命令的 bash 函数

bash - 管道中 `$?` 的正确值是多少?