• shell的各种运行模式?


    交互式shell和非交互式shell,login shell和non-login shell。首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录。

    交互式模式就是shell等待你的输入,并且执行你提交的命令。

    非交互式模式,脚本。

    login shell:是需要用户名、密码登录后才能进入的shell(或者通过”–login”选项生成的shell)

    1. 登录系统时获得的顶层shell,无论是通过本地终端登录,还是通过网络ssh登录。这种情况下获得的login shell是一个交互式shell。
    2. 在终端下使用--login选项调用bash,可以获得一个交互式login shell。
    3. 在脚本中使用--login选项调用bash(比如在shell脚本第一行做如下指定:#!/bin/bash --login),此时得到一个非交互式的login shell。
    4. 使用"su -"切换到指定用户时,获得此用户的login shell。如果不使用"-",则获得non-login shell。

    non-login shell:当然就不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。

    non-login shell与login shell的主要区别在于它们启动时会读取不同的配置文件,从而导致环境不一样。login shell启动时首先读取/etc/profile全局配置,然后依次查找~/.bash_profile、~/.bash_login、~/.profile三个配置文件中的一个,并且读取第一个找到的忽略余下的。login shell退出时读取并执行~/.bash_logout中的命令。

    交互式的non-login shell启动时读取~/.bashrc资源文件。非交互式的non-login shell不读取上述所有配置文件,而是查找环境变量BASH_ENV,读取并执行BASH_ENV指向的文件中的命令。

    (1)login shell读取的配置文件

    /etc/profile 该文件来设置系统的整体环境,通常是一些环境变量的配置。
    ~/.bash_profile或~/.bash_login或~/.profile三者中的一个,该文件是用户个人设置

    (2)non-login shell读取的配置文件

    ~/.bashrc


    通常我们要定制一些配置时,将配置写在~/.bashrc中,然后在~/.bash_profile中读取~/.bashrc,这样可以保证login shell和交互式non-login shell得到相同的配置。至于/etc/profile就不要轻易去改啦,毕竟会影响系统全局的配置。

  • 相关阅读:
    数据库索引学习
    JavaScript提高:002:ASP.NET使用easy UI实现tab效果
    jQuery效果之显示与隐藏
    leetcode
    走进Struts2(五)— 值栈和OGNL
    Html中的超链接
    再理解 as3.0接口
    easyui combobox 三级级联 input 两种实现
    三层登录实例VB.NET版具体解释---理论加实战篇
    如何用Delphi开发网游外挂
  • 原文地址:https://www.cnblogs.com/naodong/p/6940785.html
Copyright © 2020-2023  润新知