zoukankan      html  css  js  c++  java
  • 登录式与非登录式&交互式与非交互式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)。

    一个登录bash的环境初始全过程是:
    /etc/profile
    |
    --/etc/profile.d/*
    ~/.bash_profile
    |
    --~/.bashrc
    |
    --/etc/bashrc
    |
    --/etc/profile.d/*
    一个普通交互式bash的初始全过程是:
    ~/.bashrc
    |
    --/etc/bashrc
    |
    --/etc/profile.d/*
    对于非交互式bash的初始全过程是:
    不重新source 任何新的shell脚本,只继承当前shell的设置

  • 相关阅读:
    高性能网络编程(七):到底什么是高并发?一文即懂!
    社交软件红包技术解密(十一):最全解密微信红包随机算法(含代码实现)
    sonar集成阿里p3c代码规范
    jenkins+sonar 持续集成检测代码质量
    JavaScript 利用零宽断言批量替换为注释符 // 后面加空格
    Git 合并时 submodule 冲突问题解决方法
    小程序 iphone X 1rpx 边框透明及不显示问题
    加快pip下载速度
    python中remove函数的坑
    Java程序运行内存机制
  • 原文地址:https://www.cnblogs.com/tla001/p/6206009.html
Copyright © 2011-2022 走看看