05_Linux中编写新的命令

本文介绍了Linux命令执行的原理,即shell如何根据环境变量搜索并执行可执行文件。然后,通过示例详细讲解了如何手动创建一个名为hello的命令,包括编写C源代码、编译成可执行文件、修改权限以及将命令路径添加到环境变量,以便在任何目录下都能执行这个新命令。
摘要由CSDN通过智能技术生成

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的执行文件,并执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月光在发光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值