• linux——shell


    linux——shell

    简述

    Bash Shell 会话,从两个不同的维度分为:登录/非登录以及交互式/非交互式 模式。

    从是否登录这个维度分为:登录和非登录

    从是否与用户交互分为:交互式和非交互式

    登录Shell:是指Shell是输入用户名密码才进入Shell的,我们一般通过SSH登录,然后输入用户名密码进入Shell都是登录式Shell

    非登录Shell: 是指没用输入用户名密码即可进入Shell,比如如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。

    交互式Shell: 就是Shell是附加到terminal, Shell等待你的输入,并且立即执行你提交的命令, 之所以被称作交互式是因为shell与用户进行交互。

    非交互式shell: 就是Shell没有附加到terminal,无需和用户交互,比如我们执行脚本时,Shell读取文件内容执行,执行完代码后,自己结束。

    分类

    * login + interactive
      * 登陆 Linux 获取的第一个 shell 
      * 通过 ssh user_name @ romote_ip 登陆获取到的 shell 
      * 运行命令 bash -l 进入的 shell 
        * 首先读取 /etc/profile 文件 
        * 再从下面三个文件读取到第一个存在的文件
          ~/.bash_profile、~/.bash_login、~/.profile 
          etc/profile 会依次读取 /etc/profile.d 下所有文件 
    * login + non-interactive
      * 运行命令 bash -l script.sh 
        *配置文件读取同上 该模式比较少用
    * non-login + interactive 
      * 运行命令bash
        *  读取 /etc/bash.bashrc
        *  读取 ~/.bashrc文件 
    * non-login + non-interactive
      * 运行命令 bash script.sh 
        * 读取环境变量 $BASH_ENV 的值,导入该值的配置文件 
    

    login shell:取得 bash 时需要完整的登陆流程的,就称为 login shell。举例来说,我们登陆 tty1 ~ tty6 时,需要输入用户的账号与密码,此时取得的 bash 就称为“ login shell ”;

    non-login shell:取得 bash 接口的方法不需要重复登陆的举动,比如我们登陆 Linux 后, 启动终端Terminal,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 non-login shell了。又或者你在原本的 bash 环境下再次使用 bash 这个命令,建立了一个bash子进程,同样的也没有输入账号密码, 那第二个 bash (子程序) 也是 non-login shell 。

    non-login

    stept1. 读取~/.bashrc

    • 该bash配置文件仅会读取 ~/.bashrc(root和一般使用者看到会不同),它内容主要是去加载 /etc/bashrc 而他里面也没有看到sbin相关的东西
      • 「使用者的个人设置」
        • 读取/etc/bashrc

    stept2. 读取/etc/bashrc

    「整体的环境设置」

    • 「依据不同的 UID 规范出 umask 的值;」
    • 「依据不同的 UID 规范出提示字符 (就是 PS1 变量);」
    • 「调用 /etc/profile.d/*.sh 的设置」
    • 可以在这个文件中修改我们喜欢的 shell 配色方案和环境变量等等
      non-login shell 的选项(option)
      --rcfile <file>
      强制读取并执行文件的command,而不读取/etc/bashrc 及 ~/.bashrc.

    login shell

    step1. 读取/etc/profile

    /etc/profile.d/lang.sh –> /etc/locale.conf
    -bash 默认使用何种语系的重要配置文件! 文件里最重要的就是 LANG/LC_ALL
    /etc/profile.d/bash_completion.sh –> /usr/share/bash-completion/completions/

    step2. 读取「读取使用者的个人配置文件」(按顺序只读1个)

    • ~/.bash_profile
    • ~/.bash_login
    • ~/.profile

    配置文件执行顺序

    1./etc/profile
    2./etc/environment
    3.~/.bash_profile
    4.~/.bashrc
    5./etc/bashrc

  • 相关阅读:
    建设是为“有” 共享是为“无”
    设计模式-命令模式
    设计模式-建造者模式
    设计模式-抽象工厂模式(升级版工厂方法模式)
    设计模式-原型模式
    设计模式-单例模式
    Java中的多维数组
    设计模式-装饰者
    设计模式-模板方法
    乐观锁与悲观锁
  • 原文地址:https://www.cnblogs.com/tomyyyyy/p/14229044.html
Copyright © 2020-2023  润新知