zoukankan      html  css  js  c++  java
  • env

    shell环境变量以及set,env,export的区别

    原文链接

    一.shell环境变量的分类以及set env export的区别:

    set:显示(设置)shell变量 包括的私有变量以及用户变量,不同类的shell有不同的私有变量 bash,ksh,csh每中shell私有变量都不一样

    env:显示(设置)用户变量变量

    export:显示(设置)当前导出成用户变量的shell变量。

    举个例子来讲: 

    [c-sharp] view plaincopy
     
    1. [oracle@zhou3 ~]$ aaa=bbb --shell变量设定     
    2. [oracle@zhou3 ~]$ echo $aaa      
    3. bbb     
    4. [oracle@zhou3 ~]$ env| grep aaa --设置完当前用户变量并没有     
    5. [oracle@zhou3 ~]$ set| grep aaa  --shell变量有     
    6. aaa=bbb     
    7. [oracle@zhou3 ~]$ export| grep aaa --这个指的export也没导出,导出变量也没有     
    8. [oracle@zhou3 ~]$ export aaa   --那么用export 导出一下     
    9. [oracle@zhou3 ~]$ env| grep aaa  --发现用户变量内存在了     
    10. aaa=bbb  

    总结:linux 分 shell变量(set),用户变量(env), shell变量包含用户变量,export是一种命令工具,是显示那些通过export命令把shell变量中包含的用户变量导入给用户变量的那些变量.

    二:使用unset命令来清除环境变量,注意set env  export设置的变量,都可以用unset来清除的

    [c-sharp] view plaincopy
    1. 清除环境变量的值用unset命令。如果未指定值,则该变量值将被 设为NULL。示  
    2. 例如下:    
    3. $ export TEST="Test..." #增加一个环境变量TEST    
    4. $ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了    
    5. TEST=Test...    
    6. $ unset $TEST #删除环境变量TEST    
    7. $ env|grep TEST #此命令没有输出,证明环境变量TEST已经不存在了

     

    三:使用readonly命令设置只读变量

    1. 使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:  
    2. $ export TEST="Test..." #增加一个环境变量TEST  
    3. readonly TEST #将环境变量TEST设为只读  
    4. $ unset TEST #会发现此变量不能被删除  
    5. -bash: unset: TEST: cannot unset: readonly variable  
    6. $ TEST="New" #会发现此也变量不能被修改  
    7. -bash: TEST: readonly variable  

     

     

    四:最根本的设置、更改变量的配置文件 ~/.bash_profile   ~/.bashrc   ~/.bash_logout

    ~/.bash_profile  用户登录时被读取,其中包含的命令被执行

    ~/.bashrc  启动新的shell时被读取,并执行

    ~/.bash_logout  shell 登录退出时被读取

     

     

    此外,shell(这里指bash)的初始化过程是这样的:

    1.bash 检查文件/etc/profile 是否存在

    2. 如果存在,bash 就读取该文件,否则,跳过

    3.bash 检查主目录下的文件.bash_profile 是否存在。

    4. 如果存在,bash 就读取該文件,否则,跳过

    5.bash 检查主目录下的.bash_login 是否存在。

    6. 如果存在,bash 就读取该文件,否则,跳过

    7.bash 检查主目录下的文件.profile 是否存在

    8. 如果存在, bash 就读取该文件,否则,跳过。

    这些步骤都执行完后,就出现提示符了, ksh 默认提示符是 $.

    五:常见的shell变量

    PATH 这个变量包含了一系列由冒号分隔开的目录,系统就从这些目录里寻找可执行文件。如果你输入的可执行文件(例如ls、rc-update或者emerge) 不在这些目录中,系统就无法执行它(除非你输入这个命令的完整路径,如/bin/ls)。  

    ROOTPATH 这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录。  

    LDPATH 这个变量包含了一系列用冒号隔开的目录,动态链接器将在这些目录里查找库文件。 

    MANPATH 这个变量包含了一系列用冒号隔开的目录,命令man会在这些目录里搜索man页面。  

    INFODIR 这个变量包含了一系列用冒号隔开的目录,命令info将在这些目录里搜索info页面。  

    PAGER 这个变量包含了浏览文件内容的程序的路径(例如less或者more)。  

    EDITOR 这个变量包含了修改文件内容的程序(文件编辑器)的路径(比如nano或者vi)。  

    KDEDIRS 这个变量包含了一系列用冒号隔开的目录,里面放的是KDE相关的资料。 

    CONFIG_PROTECT 这个变量包含了一系列用空格隔开的目录,它们在更新的时候会被Portage保护起来。 

    CONFIG_PROTECT_MASK 这个变量包含了一系列用空格隔开的目录,它们在更新的时候不会被Portage保护起来。

    PATH:决定了shell将到哪些目录中寻找命令或程序
    HOME:当前用户主目录
    MAIL:是指当前用户的邮件存放目录。
    SHELL:是指当前用户用的是哪种Shell。
    HISTSIZE:是指保存历史命令记录的条数
    LOGNAME:是指当前用户的登录名。 
    HOSTNAME:是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。
    LANG/LANGUGE:是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。 
    PS1:是基本提示符,对于root用户是#,对于普通用户是$。
    PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”。 
    # PS1=" Hello,My NewPrompt :) "

     

    .bash_profile和.bashrc的什么区别 
    
    
    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
    并从/etc/profile.d目录的配置文件中搜集shell的设置.
    /etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
    ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
    文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
    ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
    该文件被读取.
    ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 
    
    另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
    
    ~/.bash_profile 是交互式、login 方式进入 bash 运行的
    ~/.bashrc 是交互式 non-login 方式进入 bash 运行的
    通常二者设置大致相同,所以通常前者会调用后者。 
    

     

  • 相关阅读:
    Visual Studio Code插件安装步骤
    JS省城级联
    JS省城级联
    JS省城级联
    JS省城级联
    【JAVA零基础入门系列】Day9 Java中的那个大数值
    【JAVA零基础入门系列】Day9 Java中的那个大数值
    【JAVA零基础入门系列】Day9 Java中的那个大数值
    [js插件开发教程]实现一个比较完整的开源级选项卡插件
    VS2017桌面应用程序打包成.msi或者.exe
  • 原文地址:https://www.cnblogs.com/qmfsun/p/3841535.html
Copyright © 2011-2022 走看看