Linux中编写新的命令,并在终端中执行
Linux中命令执行的原理
linux中包含很多命令,例如:ls,cd,touch,rm,mv等
首先我们提出两个疑问,这些命令是什么呢?为什么可以在终端直接使用呢?
答:这些命令实际上是一些可执行文件,被放在/bin目录下:
在Linux中有一个shell应用程序(/bin/sh),该程序实际上就是执行命令文件的媒介
在终端中输入指定的命令之后,shell程序会从系统的环境变量文件所记录的路径去寻找执行命令的文件,其中环境变量文件指/etc/environment,打开后我们可以看到:
在该文件中保存着多个目录路径,以”:“连接为一个长字符串。执行命令时,shell将会根据以上路径挨个寻找指定命令的执行文件,并执行(需要注意的是,在找到指定的执行文件后,立即执行,不在向后面继续查找)
手动创建一个命令(hello)
创建可执行文件
在某个目录中创建一个C文件,并编译为可执行文件,我的路径为:/home/book
1、创建源文件
touch hello.c
2、为源文件编写指定程序
gedit hello.c
我使用的程序源码如下:
#include <stdio.h>
int main(int argc,char **argv)
{
if(argc>=2)
{
printf("Hello %s!\n",argv[1]);
}
else
{
printf("Hello world!!\n");
}
return 0;
}
3、编译可执行文件
gcc -o hello hello.c //编译
chmod 777 hello //修改权限
4、在当前目录下执行hello(相对路径)
./hello
5、结果
添加环境变量
1、在/etc/environment中添加hello可执行文件所在路径
cd /etc //跳转到指定目录中
sudo gedit envrionment //打开环境变量文件
2、在结尾引号内加上
:/home/book
结果:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/book"
3、测试之前需要重启或重新登陆系统
4、在任意目录打开终端,输入命令hello(绝对路径),shell将会从环境变量中保存的路径中寻找hello的执行文件,并执行