2.5.6 基本命令查找

    前文曾提过Shell会沿着查找路径 $PATH 来寻找命令。 $PATH 是一个以冒号分隔的目录列表,你可以在列表所指定的目录下找到所要执行的命令。所找到的命令可能是编译好的可执行文件,也可能是Shell脚本;从用户的角度来看,两者并无超别。
 
    默认路径(defualt path)因系统而异,不过至少包含 /bin 与 /usr/bin 。
 
[many@avention Desktop]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/many/test/:/home/many/.local/bin:/home/many/bin
 
    名为 bin 的目录用来保存可执行文件。
 
    若要编写自己的脚本,最好准备自己的bin目录来存放,并让Shell能够自动找到它们。只需要建立自己的bin目录,并将它加入$PATH中的列表即可
 
    [many@avention Desktop]$ echo $HOME
    /home/many
    [many@avention Desktop]$ cd $HOME
    [many@avention ~]$ mkdir bin
    [many@avention my_sh]$ mv nusers $HOME/bin
    [many@avention my_sh]$ PATH=$PATH:$HOME/bin
    [many@avention my_sh]$ nusers
    开始统计用户数...
    2
    统计用户数结束...
 
    上述修改环境变量的方式只是临时的,要让修改永久生效,在 .profile 文件中把新定义的 bin 目录加入 $PATH,因为每次登陆时,Shell 都将读取 .profile 文件。
    export PATH=$PATH:$HOME/bin
 
    $PATH里的空项目(empty component)表示当前目录(current directory),空项目位于路径值中间时,可以用两个连续的冒号表示。如果将冒号置于最前端或尾端,可以分别表示查找时最先查找或最后查找当前目录。
 
    如果将当前目录纳入查找路径(search path),更好的做法是在$PAHT中使用点号(.),因为空项目在可移植性上有点问题。只是可以将当前路径纳入查找路径,但最好不要这样做,会在安全上存在问题。
 
 
 

linux profile 在哪个目录?

linux下profile是在/etc目录下。用户可以在Profile文件中加入环境变量,这些环境变量都会得以设置,不用每次都手工设置。
 
一、Unix/Linux有两个profile文件。
1、/etc/profile:是全局profile文件,设置后会影响到所有用户。
2、/home/username/.profile或.bash_profile是针对特定用户的,可以针对用户,来配置自己的环境变量。
注意:profile是unix上才有的;bash_profile是Linux下有的(Linux下,用户目录没有.profile文件)
/home/username/.profile或.bash_profile,都是隐藏文件,需要使用ls -a才能看到。
 
二、Bash登陆(login)的时候,Profile执行的顺序。
1、先执行全局Profile, /etc/profile。
2、接着bash会检查使用者的HOME目录中,是否有 .bash_profile 或者 .bash_login或者 .profile,若有,则会执行其中一个,执行顺序为:
.bash_profile 最优先执行> .bash_login其次执行 > .profile 最后执行。
 
 
 
原文地址:https://www.cnblogs.com/avention/p/9691237.html