linux 自定义shell命令,linux中添加用户自定义的命令

一、问题

在linux中,我们往往希望某个命令是全局的,比如我想以命令行的方式,调试某个程序,很多的时候,我们是通过如下方式实现:/usr/local/php/bin/php index.php

在如,在自己的家目录的bin目录下创建了一个shell脚本,每次我们通过以下方式去执行~/bin/open_redis.sh

没有想过,为什么我们不去通过如下方式运行呢?php index.php  //测试index.php程序

open_redis     //打开redis

想是想,但是报错zsh: command not found

3c8c4a1cfbd2be6cf3d223f5b5e56b57.png

通过报错,我们可以得知是因为找不到这个命令,那么如果我们添加这个命令,让程序可以找到不就可行了。

二、linux系统如何判断某个命令是否存在

在添加命令之前,我们首先得了解,linux是怎样查找某个命令是否存在呢?

我们可以回想,在windows里的命令提示窗口中的操作,如果我们输入某个命令提示“不是内部或外部命令,也不是可运行的程序或批处理文件”,我们会怎么做呢?当然是配置环境变量path的路径了。

其实,linux也是这个道理,查找命令也是依赖于环境变量path,如下:

c5bcce79aae6873bbee8b334fb000af4.png

如果不是系统内部命令,linux也会依赖path去查找命令。那么当我们将某个命令放到path变量中的某目录下面,也就能够查找到该命令,自然就会运行成功。

譬如,因为我path变量中,保存了go命令所在目录,所以可以直接使用go的相关命令,如下

8f1970ee2b721b8af20cf62127c253f8.png

三、linux中何如修改path的路径呢?

最简单的方式,就是直接在命令行里修改path变量的值,如下PATH=/usr/local/bin:/bin:/usr/bin:/home/dequan/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/lib/jvm/jre-1.8.0-openjdk.i386/bin:~/bin

d74ce8853a490eb4e36d28b0deee6d6d.png

但是,这种修改是临时的,每当退出后重新连接,上次的修改就会失效。为什么会失效呢?因为每次登录上linux,都会重新设置path变量,那么咱们就去了解一点linux的登录过程。

首先去执行了/etc/profile 文件里面的内容。

接着得看当前用户的shell类型,来执行不同的内容。

若当前shell为Bash,那么接下来会执行

~/.bash_profile、~/.bash_login或 ~/.bashrc文件中的其中一个 ,因为我当前系统是centos6.5,执行的是~/.bashrc文件。如下

8fe447e60972e2bedbf2ed02f3887c88.png

其中,.bash_logout是在断开连接的时候执行;~/.bashrc当登录时以及每次打开新的shell时,该该文件被读取;~/.bash_profile文件仅仅在用户登录时,执行一次。

所以,我们可以把自定义的命令需要在~/.profile文件中,其实,别名设置也是在这个文件中。如下:

5a7d7dbba3beb64bb9d1a33b8cc57fb5.png

四、linux中添加自定义命令

在~/test目录下添加一个文件redis.sh,内容如下:# ~/.bash_logout

echo "连接redis"

当然,若此时执行redis.sh,肯定会报错

83a67481799a535e4e1d1ef9cd119cee.png

因为在$PATH变量对应的目录中找不到redis变量,此时,我们有两种方式解决,如下:

1.通过设置别名

因为我当前连接用户使用的zsh,所以需要修改~/.zshrc,若为bash,则需要修改.bashrc文件。查看当前shell类型如下:

b17b080f5e5c836a6940a5056f18ea67.png

在~/.zshrc中添加如下代码:alias redis="~/test/redis"

此时,就可以顺利执行redis命令了。

4db9c6f2ba36abad349eef062e04ce71.png

2.通过设置path

如果有很多命令,每次都去设置一个别名,是不是觉得很麻烦。既然有麻烦,那么linux肯定是提供了解决方案的。那就是设置path,path对应的目录下面的命令就可以直接运行了。

比如我想让~/test目录下的所有命令都可以直接运行,需要在~/.zshrc中设置,如下:export PATH="$PATH:/home/dequan/test"

fa420edfddfa0bd5c4e3ac3ed9acaad8.png

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值