linux自定义命令

一、概述

这里的命令,是指终端命令。命令类似于ls、vim、gcc命令等。
命令的本质也就是可执行程序。
也就是说,控制台执行命令,也就是系统寻找到对应的可执行程序,加载并创建进程执行。关于终端命令的具体执行流程,这里不细说。本文重点放在如何自定义命令。

二、具体操作

1. 自定义可执行文件
// 源代码 hello.c
# include <stdio.h>

int main()
{
	printf("Hello World");
	return 0;
}

// --------------------------------
// 终端编译文件,生成hello的可执行文件
// gcc hello.c -o hello

打开终端,切换到 hello 的所在目录, 测试hello是否可运行;

./hello   // ./不可少,不加./ ,系统不会在当前目录寻找hello,也就无法去执行hello的可执行文件

到现在,还有两个问题

  1. 那就是./hello只在当前有hello文件的目录可用,切换到其他目录就不行了。
  2. 必须加./才可用,不加出错。
2. 添加自定义指令

这一步,就解决上文提到的两个问题。
简单分析: 这两个问题的出现可以归于一点原因,系统找不到名为hello的可执行文件,所以解决问题的关键是让系统在任何目录都能通过hello找到hello文件,并加载运行。那么就要设置环境变量。

再细说设置环境变量之前,我们先简单看看环境变量长什么样。
终端输入命令:

env | grep PATH

bash:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:
发现输出了一长段字符,以":"分隔, 在细看,我们能找到我们熟悉的,可能有/bin、 /usr/bin等等,这些都是系统的环境变量。说白了也就是一串以“:”分隔的目录路径

然后我们在说说,终端直接输入hello和输入.\hello的区别

./hello   # 系统在当前文件夹下找名为hello的可执行文件。找到则运行,未找到则会给出错误信息。
hello	  # 系统不会在当前目录下寻找文件,而是直接到环境变量指明的目录下去找文件,找到则直接加载运行;否则会给出错误信息。

到这一步,你应该大概已经知道怎么做了吧?如果没有任何思路,建议在看一遍。
根据上文的分析,我们可以主要有两种方式使得我们自定义的命令(可执行文件)在任何目录下生效。

一、不改变环境变量

将可执行文件直接移至系统已经设置好的环境变量对应的目录下。
比如:
mv hello /usr/bin
or
mv hello /bin

注意: 这其中又涉及这几个目录存放的二进制文件的访问区别, 这里不细说。

二、添加环境变量

**将hello文件所在的目录路径加入到环境变量中。**这里就涉及到环境变量的修改。

修改环境变量

具体修改,链接已给。
这里只说明一点,那就是,在用修改PATH:value修改环境变量时,是覆盖式的。新值覆盖旧值,切记要加上原来的环境变量。

三、文章总结

总的来说,文章主要是以文字为主,没有带着读者一步一步的做,截图每一步用来展示。希望你能彻底搞懂。其实,过程中涉及的知识点还是比较多的,列举几个:

  1. /bin 、 usr/bin、 usr/sbin …这些环境变量设置的目录有什么区别呢?
  2. 环境变量
    什么是环境变量?有什么作用?如何设置环境变量?
  3. linux的配置文件
    比如/etc/profile、~/.bashrc 。。。等又有什么作用、联系和区别。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值