1 php
1 which php 查看命令来源
2 ll /usr/bin/php 软连接,来源是php的安装文件的可执行文件php
3 $PATH的作用,
显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成如下,
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
当我们执行程序时,shell自动跟据PATH变量的值去搜索该程序。
上面的意思是,linux执行任何命令,都会先去/usr/local/sbin,如果没有再去/usr/local/bin下面,如果还没有就去/usr/local/bin,以此类推,如果都没有,就会提示找不到命令
而我们的php 命令也是按照这个顺序执行的,因为这个php是在/usr/bin下,所以我们才能执行到
测试:
我把/usr/bin/下的php改名php_ 入上图1命令
此时,php think spider --user命令会报错如上图2命令执行完后
然后我把/www/server/php/73/bin/临时加入环境变量 命令3
我再运行命令4 ,执行成功(注意:这次不是从/usr/bin下找到的php执行命令,而是/www/server/php/73/bin/下面)
/bin,/sbin,/usr/sbin,/usr/bin 目录
这些目录都是存放命令的,首先区别下/sbin和/bin:
从命令功能来看,/sbin 下的命令属于基本的系统命令,如shutdown,reboot,用于启动系统,修复系统,/bin下存放一些普通的基本命令,如ls,chmod等,这些命令在Linux系统里的配置文件脚本里经常用到。
从用户权限的角度看,/sbin目录下的命令通常只有管理员才可以运行,/bin下的命令管理员和一般的用户都可以使用。
从可运行时间角度看,/sbin,/bin能够在挂载其他文件系统前就可以使用。
而/usr/bin,/usr/sbin与/sbin /bin目录的区别在于:
/bin,/sbin目录是在系统启动后挂载到根文件系统中的,所以/sbin,/bin目录必须和根文件系统在同一分区;
/usr/bin,usr/sbin可以和根文件系统不在一个分区。
/usr/sbin存放的一些非必须的系统命令;/usr/bin存放一些用户命令,如led(控制LED灯的)。
转下一位网友的解读,个人认为诠释得很到位:
/bin是系统的一些指令。bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
/sbin一般是指超级用户指令。主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
/usr/bin 是你在后期安装的一些软件的运行脚本。主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。
/usr/sbin 放置一些用户安装的系统管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
如果新装的系统,运行一些很正常的诸如:shutdown,fdisk的命令时,悍然提示:bash:command not found。那么 首先就要考虑root 的$PATH里是否已经包含了这些环境变量。 可以查看PATH,如果是:PATH=$PATH:$HOME/bin则需要添加成如下: PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
/usr/bin 系统预装的一些可执行程序,随系统升级会改变
/usr/local/bin 用户安装的可执行程序,不受系统升级影响,用户编译安装软件时,一般放到/usr/local目录下
如果两个目录含有相同的可执行程序,通过查看PATH,比较优先级
echo $PATH/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin这里/usr/local/bin优先于/usr/bin
PATH这个目录下放的可执行程序,在系统任何地方都可以直接执行,不需要指定路径