zoukankan      html  css  js  c++  java
  • Linux中环境变量到底写在哪个文件中?解析login shell 和 no-login shell

    login shell:取得bash 时需要完整的登入流程,就称为login shell。举例来说,同tty1~tty6登入时, 需要输入用户名和密码,此时取得的bash就称为login shell

    non-login shell:取得bash介面的方法不需要重复登入的动作。

    举两个例子
    (1)以X window登入linux后,再以X 的图形化介面启动终端机,此时那个终端机并不需要再次的输入用户名和密码,那个bash的环境就称为non-login shell
    (2)在原本的bash环境中再次下达bash这个指令,同样没有要求输入用户名和密码,那个第二个bash也是non-login shell

    login shell 和 no-login shell 的执行顺序:
    Login shells:
    /etc/profile
        /etc/profile.d
    ~/.bash_profile
        ~/.bashrc
              /etc/bashrc

    Non-login shells:
    ~/.bashrc
        /etc/bashrc
              /etc/profile.d

    注意:
    /etc/profile :整个系统的环境
    放在~里的是个人设置,一般放在~/.bashrc

    如果想执行当前目录的脚本,有2种方法: 可以运行./script.sh  (需要有可执行权限)
    (1)使bash新生成一个子bash来执行,例如:./script.sh (需要有可执行权限)。在此情况下, 脚本对环境变量的更改只对子bash有效.
    (2) 可使用source命令来直接执行脚本(可用'.'来代替source). 它与上面的方法有两点区别:
         1, 脚本文件不需要执行权限.
         2, 就在当前bash中执行, bash不会新fork一个子bash来执行它, 所以脚本对环境变量的更改会影响到当前bash.
    所以当希望使修改的环境变量生效,用source即可。
  • 相关阅读:
    23种设计模式全解析
    Dubbo
    存储过程——存储过程与函数(四)
    ADO.NET- 基础总结及实例介绍
    存储过程——存储过程与视图(三)
    存储过程——增删改(二)
    简易三层架构详解
    Ado.Net实现简易(省、市、县)三级联动查询,还附加Access数据
    存储过程——介绍(一)
    SqlBulkCopy批量写入25万条数据只需3s
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3161499.html
Copyright © 2011-2022 走看看