Linux环境下通常我们将Terminal可访问的程序放在/bin
, /usr/bin
, /usr/local/bin
,有时也会放在~/bin
目录下。
那么在Terminal页面打开(其实是shell login)的时候,程序加载进shell的过程大致如下:
- Terminal打开时当前user默认的shell会去读取自己的配置文件,一般在
~
目录下; - 这个配置文件会去
export
上述几个路径,读取*/bin
下的可执行文件; */bin
下的可执行文件通常情况下是指向某个路径下的软链接(可以使用ln -s
创建)
所以在Terminal中访问得到command not found
的原因可能有:
- 当前调用的命令确实没有安装;
- 当前命令安装了,但是没有创建软链接到
*/bin
; - 当前命令已创建软链接到
*/bin
,但是所在*/bin
路径没有被export;
因此,解决方案如下:
# 编辑/etc/profile文件
vim /etc/profile
# 添加对应程序的/bin目录
# 例如:mongodb 默认的安装目录为/usr/local/mongodb(可执行文件在此目录下),故在/etc/profile文件下添加如下语句
export PATH=/usr/local/mongodb/bin:$PATH
#重新执行刚修改的初始化文件
source /etc/profile