linux的$PATH默认路径
笔记从程序运行命令./pro_name得到启发,为什么有些程序不需要写./,到底是啥原因呢?为什么在自己的目录下输入pro_name会显示没有此文件呢。有基础的都知道啦,linux 系统会去 PATH 里寻找有没有叫pro_name的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成pro_name 是会找不到命令的,要用 ./pro_name告诉系统说,就在当前目录找。
那么PATH 有哪些呢?终端命令行输入echo $PATH就可以看到了,PATH一定要大写。
/usr/local/bin:存放用户自己安装的程序,通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。与本地机器无关的程序。
/usr/local/sbin:同上,但是都是root权限才能执行的。
/usr/sbin:可执行程序的目录,但大多存放涉及系统管理的命令,只有root权限才能执行。
/usr/bin:这个目录是可执行程序的目录,当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录,普通用户就有权限执行。
/sbin:大多数涉及系统管理的命令都存放在该目录中,它是超级权限用户root的可执行命令存放地,凡是目录sbin中包含的命令都是root权限才能执行的。
/bin:该目录存放着系统最常用的最重要的命令,是以独立的文件形式存在。比如:ls、cp、mkdir等命令,系统最基础的命令都放在这里。
/usr/games:包含游戏等文件。
/usr/local/games:存放用户自己安装游戏等文件。
关于usr这个名称,我一直以为是user的缩写,但是里面的程序文件和user好像没有啥关系。那笔者就导出寻觅,原来曾经的 /usr 还是用户的家目录,现在被 /home 取代了,现在更加像unix资源目录(unix system/software resources),具体可以参考文章Linux目录/usr缩写及目录结构说明。
既然/usr/local/bin存放用户自己安装的程序,那么笔者觉得每次连接数据库输入命令sudo mysql -h localhost -uphpmyadmin -proot 太麻烦了,为什么不能再PATH里面写个服务直接调用呢,请看图示。
在/usr/local/bin建立connectmysql文件,文件内容就是
#!/bin/bash
sudo mysql -h localhost -uphpmyadmin -proot
那以后只要在命令行输入connectmysql,就可以进入数据库了。
问题就来,可以放在其他PATH里面吗?可以用命令看看 ls -lh /usr/bin/等目录,里面很多程序,我自己建立的放在里面也不太合适,放在/usr/local/bin里面就只有我一个程序,管理更加方便。
大家看看我写的另一篇文章-shell脚本学习由浅入深,最后一个图片。作用是删除目录下的所有文件,并将一个目录下所有文件拷贝到另一个文件。weekbackup程序脚本可以移到哪里比较好呢?echo $PATH看看!