一、什么是shell?
shell就是一个应用程序,我们从键盘上给shell发送命令,回车之后shell就会去执行这些命令。
shell可以接收键盘上的输入数据并回显,当我们使用键盘给shell程序发送回车时,shell就知道字符输入结束了,它会解析输入的字符串,把这些字符串用空格分为几个部分,我们以ls -h为例,第1部分就是程序名,其它部分就是参数,然后寻找程序然后执行程序。那么shell会去哪里找程序呢?shell会去PATH环境变量所指示的位置找。我们也可以指定绝对、相对路径,shell就会直接去这些路径找到程序,找到程序后,会启动该程序,并传入参数。
我们输入env命令
等号左边都是环境变量,等号右边是环境变量的值
我们可以用echo $PATH来显示某个环境变量,里面都是各个字符串,各个字符串都是用冒号隔开,shell程序就是去这些目录里面逐个寻找看看有没有ls这个程序名,找到之后就去执行它。
也可以自己指定绝对路径和相对路径,这样shell程序就不会去PATH环境变量里面寻找。
比如我们有这样一个hello.c文件在桌面上,文件内容如下:
我们编译之后
直接输入hello是不会执行程序的,因为既没有包含相对路径也没有包含绝对路径,系统就会默认从环境变量所指示的位置里面找这个hello程序,所以提示找不到,那么我们应该怎么去设置环境变量呢?后面会讲。我们可以复制一个c文件到该环境变量的路径里面,这样就可以在环境变量里面找到该文件。
采用相对路径执行应用程序
采用绝对路径执行应用程序
我们输入的字符串通过空格隔开,shell会根据第一个字符串来寻找应用程序,然后把所有的字符串都传给hello程序里面的main函数。argc就是记录字符串的串数,第一个参数就会保存在argv[0]里面,第二个参数就会保存在argv[1]里面。
如何设置环境变量?
临时设置:
在终端执行以下命令,这只对当前终端有效
export PATH=$PATH:/home/lxm/桌面,如果路径输入不完整就会失败。
输入 完整路径才可以
退出当前终端就失效了
永久设置的方法:
方法一:
修改~/.bashrc,在行尾添加或修改:export PATH=$PATH:/home/book/桌面,然后重启终端
重启终端
方法二:
修改/etc/environment,比如:sudo gedit /etc/environment,然后添加下行红色部分: