区分交互式登录和非交互式非登录外壳

雏菊

我试图区分这四个术语:登录,非登录,交互式和非交互式

  • 交互式-登录外壳
  • 交互式-非登录外壳
  • 非交互式-登录外壳
  • 非交互式-非登录外壳

据我了解,
交互式-非登录Shell:启动系统,登录到系统并打开终端,并且
非交互式-登录Shell:通过telnet进入系统并登录

但是交互性-登录shell呢?
它是否登录到系统,打开虚拟终端并登录?并且
非交互-非登录外壳,它在crontab中运行自动化脚本吗?

芒登

您似乎唯一真正的误解是关于什么构成了非交互式登录外壳。

简要地(请参见此处以获取更多详细信息),并带有示例:

  • 交互式登录外壳:例如,您通过登录到远程计算机ssh另外,您可以在本地计算机(Ctrl+ Alt+ F1上的tty上登录。

  • 交互式非登录外壳:打开一个新终端。

  • 非交互式非登录外壳程序:运行脚本。所有脚本都在各自的子外壳中运行,并且该外壳不是交互式的。它仅会打开以执行脚本,并在脚本完成后立即关闭。

  • 非交互式登录shell:这是非常罕见的,您不太可能遇到它。一种启动方式是echo command | ssh server如果ssh在没有命令的情况下启动(ssh而不是在远程外壳程序上ssh command运行command),它将启动登录外壳程序。如果stdinof的ssh不是tty,它将启动非交互式shell。这就是为什么echo command | ssh server将启动非交互式登录Shell的原因。您也可以从开始bash -l -c command

如果您想解决这个问题,可以按如下所示测试各种类型的shell:

  • 这个外壳是交互式的吗?

    检查$-变量的内容对于交互式外壳,它将包括i

    ## Normal shell, just running a command in a terminal: interacive
    $ echo $-
    himBHs
    ## Non interactive shell
    $ bash -c 'echo $-'
    hBc
    
  • 这是登录shell吗?

    没有可移植的方法检查这个,但是,对于bash,你可以检查login_shell选项设置:

    ## Normal shell, just running a command in a terminal: interacive
    $ shopt login_shell 
    login_shell     off
    ## Login shell; 
    $ ssh localhost
    $ shopt login_shell 
    login_shell     on
    

综合所有这些,下面是每种可能的外壳类型之一:

## Interactive, non-login shell. Regular terminal
$ echo $-; shopt login_shell
himBHs
login_shell     off

## Interactive login shell
$ bash -l
$ echo $-; shopt login_shell
himBHs
login_shell     on

## Non-interactive, non-login shell
$ bash -c 'echo $-; shopt login_shell'
hBc
login_shell     off

## Non-interactive login shell
$ echo 'echo $-; shopt login_shell' | ssh localhost
Pseudo-terminal will not be allocated because stdin is not a terminal.
hBs
login_shell     on

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

登录/非登录和交互式/非交互式shell

来自分类Dev

是否有可能存在非交互式的登录外壳?

来自分类Dev

是否有非交互式登录外壳?

来自分类Dev

为什么我们有登录,非登录,交互式和非交互式bash shell?

来自分类Dev

cron作业是否运行非交互式,非登录外壳?

来自分类Dev

cron作业是否运行非交互式,非登录外壳?

来自分类Dev

非登录非交互式bash启动问题

来自分类Dev

交互式,非交互式shell和扩展

来自分类Dev

如何在交互式非登录外壳上获取正确的启动脚本

来自分类Dev

非交互式会话的 docker 登录返回 401

来自分类Dev

在交互式外壳模式和非交互式外壳模式下运行ssh之间有区别吗?

来自分类Dev

是否有可能是非交互式的登录外壳?

来自分类常见问题

登录外壳程序和交互式外壳程序有什么区别?

来自分类Dev

在非交互式外壳中运行脚本?

来自分类Dev

获得非交互式外壳的“ top”输出

来自分类Dev

如何为非交互式/非登录shell定义别名?

来自分类Dev

达世币非交互式非登录rc文件

来自分类Dev

如何在PhysicsJS中设置交互式和非交互式对象?

来自分类Dev

在哪里可以为所有交互式非登录Shell运行要运行的命令?

来自分类Dev

针对iOS上的Azure Graph API的非交互式登录(缓存的凭据)

来自分类Dev

在哪里可以为所有交互式非登录Shell运行要运行的命令?

来自分类Dev

如何与非交互式SSH登录一起使用who / w

来自分类Dev

交互式非登录bash会话退出时,将读取并执行哪个文件?

来自分类Dev

使用非交互式登录CLI创建Azure虚拟机

来自分类Dev

QMenu中的非交互式项目

来自分类Dev

非交互式脚本中的sudo

来自分类Dev

非交互式Shell扩展别名

来自分类Dev

HPC上的非交互式Matlab?

来自分类Dev

非交互式运行adduser

Related 相关文章

  1. 1

    登录/非登录和交互式/非交互式shell

  2. 2

    是否有可能存在非交互式的登录外壳?

  3. 3

    是否有非交互式登录外壳?

  4. 4

    为什么我们有登录,非登录,交互式和非交互式bash shell?

  5. 5

    cron作业是否运行非交互式,非登录外壳?

  6. 6

    cron作业是否运行非交互式,非登录外壳?

  7. 7

    非登录非交互式bash启动问题

  8. 8

    交互式,非交互式shell和扩展

  9. 9

    如何在交互式非登录外壳上获取正确的启动脚本

  10. 10

    非交互式会话的 docker 登录返回 401

  11. 11

    在交互式外壳模式和非交互式外壳模式下运行ssh之间有区别吗?

  12. 12

    是否有可能是非交互式的登录外壳?

  13. 13

    登录外壳程序和交互式外壳程序有什么区别?

  14. 14

    在非交互式外壳中运行脚本?

  15. 15

    获得非交互式外壳的“ top”输出

  16. 16

    如何为非交互式/非登录shell定义别名?

  17. 17

    达世币非交互式非登录rc文件

  18. 18

    如何在PhysicsJS中设置交互式和非交互式对象?

  19. 19

    在哪里可以为所有交互式非登录Shell运行要运行的命令?

  20. 20

    针对iOS上的Azure Graph API的非交互式登录(缓存的凭据)

  21. 21

    在哪里可以为所有交互式非登录Shell运行要运行的命令?

  22. 22

    如何与非交互式SSH登录一起使用who / w

  23. 23

    交互式非登录bash会话退出时,将读取并执行哪个文件?

  24. 24

    使用非交互式登录CLI创建Azure虚拟机

  25. 25

    QMenu中的非交互式项目

  26. 26

    非交互式脚本中的sudo

  27. 27

    非交互式Shell扩展别名

  28. 28

    HPC上的非交互式Matlab?

  29. 29

    非交互式运行adduser

热门标签

归档