Linux shell PATH 路径设置小结

         近日,在捣鼓Linux下的PATH变量设置,起因是直接执行service命令不行,找不到这个命令,必须加上/sbin,不爽,顾解决之。这一弄,还真学了不少东西。

         首先,Linux 下加载用户的设置是有顺序的,根据不同的shell 类型,读取的文件名称有所不同,下图以bash shell为例:

         

               到这里有两个概念:(1)shell 类型 (2)登陆/非登陆  交互/非交互shell

               1 shell 类型

               Linux Shell的种类很多,目前流行的Shell包括ash、bash、ksh、csh、zsh等,用户可以通过查看/etc/shells 文件中的内容来查看自己主机中当前有哪些种类的Shell,命令如下(下面是在笔者Linux 主机中查看信息的结果):

           


  • # cat /etc/shells  
  • /bin/sh  
  • /bin/bash  
  • /sbin/nologin  
  • /bin/bash2  
  • /bin/ash  
  • /bin/bsh  
  • /bin/tcsh  
  • /bin/csh 
    使用下面的命令来查看Linux 当前正在使用的Shell 类型:
    # echo $SHELL 

          详细的介绍可参考http://book.51cto.com/art/201106/271627.htm

           

    2     登陆/非登陆  交互/非交互shell

    首先,这是两个不同的维度来划分的,一个是是否交互式,另 一个是是否登录。
    交互式shell和非交互式shell
    交互式模式就是shell等待你的输入, 并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签 退后,shell也终止了。
    shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。


    chinaunix 论坛中关于登录shell与非登录shell、交互式shell与非交互式Shell的讨论:
    Login Shell:当init3时,mingetty spawn出登录提示符的时候,你输入帐号和密码进入了,出现了shell提示符,这个过程就是登录外壳;
    Interactive Shell:接下来你得到了一个像root@host />这样的提示符,你输入什么,它就解释出什么,这就是交互式外壳;你在当前Shell又fork了一个shell(bash),这个bash也是 交互式外壳。通常情况下interactive shell是login shell派生出来的。
    Non Interactive Shell:你可能需要学习写一个bash script,用外部shell执行:bash  script.sh,它(bash)从第一条命令执行到最后一条然后退出,不与你进行任何交互,它就是 非交互式外壳。
    交互式非登录shell就是指你在Gnome图形界面中打开“终端”出来的那种窗口程序,
    和登录shell 相比,它是“非登录”的,你并不需要输入用户名和密码,
    和非交互式shell相比,这是“交互式”的,就像你说的那它:你输入什么,它就解释出什么


    执行exit退出非登录shell状 态;
    执行logout退出登录shell状态。


    在登录shell里,确实只读取/etc/profile和~ /.bash_profile, ~/.bash_login, and ~/.profile按顺序最先的一个,并执行其中的命令。除非被 --noprofile选项禁止了;
    在非登录shell里,确实只读取 /etc/bash.bashrc和~/.bashrc


         根据shell 类型,如果是bash shell, 修改用户主目录下的$HOME/.bashrc(实际上.bash_profile调用的), 

         末尾加

        PATH=$PATH:/sbin/

        export  PATH


        如果是ksh shell,修改用户主目录下的$HOME/.profile,

         末尾加

        PATH=$PATH:/sbin/

        export  PATH


         3 Linux 下的隐藏文件

         Linux 下的隐藏文件,已"."开始,可通过ls -a 命令查看;

        创建隐藏文件 vi .aaaa, 加权限 和普通文件没区别,不过,要看文件权限等信息,要转成非隐藏文件,通过命令  mv  .aaaa  aaaaa, ls -lrt aaaa,

       mv aaaa .aaaa//再转成隐藏文件

          

         4 Linux用户环境变量

        

        环境变量就是系统或软件设置的一些参数,用户环境变量就是用户登录系统后,都有自已专用的运行环境。在Windows系统中用户环境变量保存在用户家目录,Linux也是同样的。本文主要是讲解Linux常用的环境变量和环境变量的设置。


    一、环境变量相关操作(只应用于当前,要永久保存需要写入到相关文件。)
    #echo $PATH
    显示PATH设置。
    #env
    显示当前用户变量。
    #set
    显示当前Shell变量。
    #export
    显示当前导出成用户变量的shell变量。
    #a=abc
    定义一个Shell变量。
    #export a=abc
    定义一个Shell变量,并导出成用户变量。
    #unset a
    清除环境变量
    #readonly a
    设置只读环境变量


    二、常见的环境变量
    PATH      决定了shell将到哪些目录中寻找命令或程序
    HOME       当前用户主目录
    HISTSIZE     历史记录数
    LOGNAME     当前用户的登录名 
    HOSTNAME   指主机的名称
    SHELL      前用户Shell类型 
    LANGUGE     语言相关的环境变量,多语言可以修改此环境变量
    MAIL      当前用户的邮件存放目录 
    PS1       基本提示符,对于root用户是#,对于普通用户是$
    PS2       附属提示符,默认是“>”


    三、Linux环境变量设置文件
    /etc/profile
    全局用户,应用于所有的Shell。
    /$HOME/.profile
    当前用户,应用于所有的Shell。
    /etc/bash_bashrc
    全局用户,应用于Bash Shell。
    ~/.bashrc
    局部当前,应用于Bash Sell。


    参考自:

    http://www.51testing.com/html/38/225738-216858.html

    http://hi.baidu.com/inbi_/item/210fd6fd8b89471de3e3bd3d

    http://www.2cto.com/os/201301/184129.html





     


             


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值