如何从 AIX 中的“echo $-”输出中区分交互式和非交互式登录?
Posted
技术标签:
【中文标题】如何从 AIX 中的“echo $-”输出中区分交互式和非交互式登录?【英文标题】:How to differentiate between interactive and non-interactive logins from "echo $-" output in AIX? 【发布时间】:2020-08-23 06:34:41 【问题描述】:我在 AIX (kshell) 上这样做
当我在本地echo $-
时,我得到ism
的输出,当我远程运行时ssh test_id@sandbox "echo $-"
$ echo $-
ism
我正在从远程服务器到另一台 AIX 服务器运行它
ssh test_id@sandbox "echo $-"
himBH
哪个是交互式的,哪个是非交互式的
【问题讨论】:
每当您在答案中看到i
时,它都是交互式的。由于ism
和himBH
都包含i
,它们都是交互式的。
谢谢@LorinczyZsigmond 的帮助。如果它是非交互式的,你能不能说一下我可以期待什么O/P?
基本上,它在交互时和非交互时处理不同的启动文件(rcfiles)。也可以是'login'和'not login',所以有四种组合:login,not loginxinteractive,not interactive
【参考方案1】:
如果“交互式”是指有一个终端与连接关联,我以前公司的AIX ksh一般用这种方法:
if tty -s
then
do-coding-for-sessions-with-terminal
else
do-nothing
fi
【讨论】:
【参考方案2】:正如 cmets 所指出的,i
变量中 $-
的存在表明 shell 是交互式的。引入an answer from Tim Kennedy over at U&L:
case "$-" in
*i*)
interactive=1
;;
*)
not_interactive=1
;;
esac
上面的代码使用case
statement 来查看$-
变量是否包含i
。
【讨论】:
以上是关于如何从 AIX 中的“echo $-”输出中区分交互式和非交互式登录?的主要内容,如果未能解决你的问题,请参考以下文章