在我们的当前目录下有一个可执行文件,它的作用是打印出hello world!,我们执行一下:
$ls hello.c hello $hello hello: 找不到命令 $./hello hello world!想一下,为什么我们执行ls的时候就可以执行,而要执行hello的时候就必须要加上./呢?
$which ls /bin/ls在我们没有告诉系统完整路径时,系统会在一个名为PATH的的环境变量所存的路径下去找这个文件,我们用env打印当前的环境变量看一下:
$env ...我们找到PATH项可以看到/bin在这个环境变量中,所以我们输入ls后,系统会到这个目录下去寻找。
DESKTOPSESSION=gnome
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
QTIMMODULE=xim
PWD=/home/ymqqqqdx
XMODIFIERS=@im=ibus
...
如果我们要把hello所在的目录也添加到PATH里面,是不是直接输入hello就可以直接运行我们这个程序了呢?
下面我们来试一下:
pwd /home/ymqqqqdx export PATH=/home/ymqqqqdx hello hello world! ls ls: 找不到命令这是怎么了?怎么连ls都找不到了呢?
$export PATH=$PATH:/home/ymqqqqdx hello hello world! ls hello.c hello
由上面的例子我们可以看出,我们做的修改在关闭终端后没有保存,怎么才能将我们做的修改保存起来呢?
修改~/.bashrc:
$gedit ~/.bashrc
此时我们用gedit打开了这个文件,到这个文件的最下方,添加我们上面输入的export PATH=$PATH:/home/ymqqqqdx,然后保存退出。