Ubuntu1604装机系列(五):认识Ubuntu系统目录

背景

装拆了十几遍ubuntu1604系统、opencv3.1/3.4、cuda8/9后,开始慢慢领悟到ubuntu系统文件即一切的魅力。
 
usr: 并不是user的意思,而是unix system resrouces,所以上述文件夹都是系统目录,跟服务器中的某个单独用户没什么”私人关系”,直白点说,所有用户都可以访问。
bin: 指代binary,二进制/可执行程序的存储目录,直白点说,这里的文件都可以在terminal中直接输入进行访问


/bin: 存储ubuntu很底层的可执行文件,你用到的cp, ls, mv等基本指令都在这里。
/usr/bin:存储系统级的可执行文件,以及apt-get安装的文件。

1
2
3
4
5
6
7
8
9
10
11
cd /usr/bin
ls | grep python # 系统自带python
python
python3
...

ls | grep ssh # 笔者apt-get安装的ssh、tmux软件
ssh

ls | grep tmux
tmux

/usr/local/:很多人都说用户自己编译的安装目录就在这里,比如opencv、比如cuda。这种方式一般是通过sudo安装。但刚刚说了这些系统目录所有用户都可以访问,所以当A用户装了cuda8,B用户装了cuda9,A用户装了opencv2,B用户装了opencv3…这样就会造成local目录极其混乱。
 
所以建议在安装cudaopencv时,在安装选项/cmake中指定安装目录到一可见文件夹,比如/home/cuda//home/Matlab,这样即使安装出错,删除整个cudaMatlab文件夹就行了。就没必要非得安装在/usr/local目录。
 
/usr/local/bin:存储用户级的可执行文件。还是拿matlab来说,可以将/home/Matlab下的bin文件建立软连接到这里,这样系统就可以搜索到了,在终端直接开启matlab。

1
sudo ln -s /home/Matlab/r2017b/bin/matlab /usr/local/bin/matlab

小结:
/usr/...下的文件,所有用户都可以访问
bin//usr/bin/usr/local/bin,只要在bin目录下的,都可以在terminal中直接访问。关系为层层递进,以上面的matlab来说,你确实也可以将软连接放到前面两个目录。但它没有cp、mv这些指令底层,也没有python这些工具,是每个用户的通用工具。所以放到最上层的local 目录即可。