如何判断终端类型是login还是non-login

2013-03-05 14:01:20 +08:00
 atom
写了一个脚本,需要在里面判断,当前运行的终端是 login-shell 还是 non-login shell。
man了半天无头绪,求教!
3905 次点击
所在节点    Linux
3 条回复
BOYPT
2013-03-05 14:45:50 +08:00
non-login shell你指cronjob里面跑的那种么?

可以 [[ -t 0 ]] 判断stdin是否打开,没打开就是非交互shell。
atom
2013-03-05 15:56:49 +08:00
@BOYPT
看到你的回答我重翻了下abs,-t这个选项好冷门啊

cronjob属于哪种shell我一直不晓得,它不会读取任何配置文件。

non-login shell比较典型的代表就是
ssh host 'command'
衍生的scp
以及su username
BOYPT
2013-03-05 16:23:06 +08:00
@atom 额,我就man bash里面查的...

$ ssh root@192.168.0.220 "[[ -t 0 ]] && echo stdin is a tty"
root@192.168.0.220's password:

没返回,那看起来这样判断应该可以的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/61997

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX