加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

区分交互式和非交互式shell登录和非登录shell之间差异

发布时间:2022-06-20 06:30:32 所属栏目:教程 来源:互联网
导读:shell有两种模式:交互式shell和非交互式shell;shell还分登录ahell和非登录shell,是不是感觉有点晕?那么本文就来讨论一下交互式shell和非交互式shell、登录shell和非登录shell的概念及不同点. 交互式shell和非交互式shell、登录shell和非登录shell的区别,
  shell有两种模式:交互式shell和非交互式shell;shell还分登录ahell和非登录shell,是不是感觉有点晕?那么本文就来讨论一下交互式shell和非交互式shell、登录shell和非登录shell的概念及不同点.
 
  交互式shell和非交互式shell、登录shell和非登录shell的区别,首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录.
 
  交互式shell和非交互式shell(interactive shell and non-interactive shell)
 
  交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令,这种模式被称作交互式是因为shell与用户进行交互,这种模式也是大多数用户非常熟悉的,登录、执行一些命令、退出,当你退出后,shell也终止了.
 
  shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行,在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们,当它读到文件的结尾EOF,shell也就终止了.
 
  可以通过打印“$-”变量的值,代表着当前shell的选项标志,查看其中的“i”选项,表示interactive shell,来区分交互式与非交互式shell.
 
  master@jay-intel:~/workspace/shell$ echo $-
  himBH
  master@jay-intel:~/workspace/shell$ ./test.sh
  echo $-
  hB
  登录shell和非登录shell
 
  登录shell:是需要用户名、密码登录后才能进入的shell(或者通过”–login”选项生成的shell).
 
  非登录shell:当然就不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell.
 
  执行exit命令,退出一个shell(登录或非登录shell);
 
  执行logout命令,退出登录shell(不能退出非登录shell).
 
  master@jay-intel:~$ bash --login
  master@jay-intel:~$ logout
  master@jay-intel:~$ bash --login
  master@jay-intel:~$ exit
  logout
  --phpfensi.com
  master@jay-intel:~$ bash
  master@jay-intel:~$ logout
  bash: logout: not login shell: use `exit'
  master@jay-intel:~$ exit
  exit
  bash是 login shell 时,其进程名为”-bash“ 而不是”bash”,比如下面的命令行演示:
 
  man bash: A login shell is one whose first character of argument zero is a -, or one started with the –login option.
  
  # 在 login shell 中:
  [perf@host_220-188 ~]$ echo $0
  -bash
  [perf@host_220-188 ~]$ ps -ef | grep '-bash' | grep -v grep
  root     16823 16821  0 May06 pts/0    00:00:00 -bash
  perf     21135 21134  0 May07 pts/1    00:00:00 -bash
  
  #在一个非登陆shell中:
  jay@jay-linux:~$ echo $0
  /bin/bash
  jay@jay-linux:~$ ps -ef | grep '-bash' | grep -v grep
  jay@jay-linux:~$。
  

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读