前言

在一台Linux机器上写好一个脚本以后,希望这个脚本让这台机器上其他用户使用,但是不可能会让别人记住这个脚本的路径,这个时候该怎么办呢?

原理

在回答上面的问题之前,我们首先思考下面这个问题:为什么我们用的很多指令都不需要绝对路径的文件名呢?

我以最常用的ls指令为例子。首先要查看指令的执行文件位置:which ls。输出的内容为:/bin/ls。

为什么ls指令就不需要以绝对路径名就能调用呢?

这是因为环境变量PATH指定了默认的检索路径。那么要怎么去查看环境变量呢?

1. 输出内置变量PATH:echo $PATH

2. 查看所有变量:env

但是有时候我们使用ll也能调用带有参数的ls指令,但是使用which ll却找不到执行文件。这是使用了别名alias指令指定了指令的别名。

其实除此之外我们还可以在PATH的路径中添加链接文件指向我们的指令。

由此可知,可以通过以下方式指定脚本的路径:

1. 在PATH变量中添加脚本路径

2. 使用alias指令设置别名

3. 在PATH中的路径目录中增加链接文件

实战

准备自定义脚本创建脚本文件:touch mysh.sh

编辑脚本文件(如果没安装vim可以改为用vi):vim mysh.sh

按Insert键进入编辑模式,文件内容如下:按Esc键退出编辑模式,输入:wq保存并退出

授予脚本文件执行权限:chmod +x mysh.sh

尝试执行脚本:./mysh.sh

修改环境变量PATH修改profile文件:vim /etc/profile,在文件尾部添加以下内容:export PATH=$PATH:/root。内容中的/root可以替换为脚本所在的目录。

使修改后的profile文件生效:soruce /etc/profile

检查PATH修改是否生效:echo $PATH

尝试执行脚本:mysh.sh

设置别名修改profile文件:vim /etc/profile,在文件尾部添加设置别名的内容,注意要使用全路径名:alias mysh=/root/mysh.sh内容中的/root可以替换为脚本所在的目录。

使修改后的profile文件生效:soruce /etc/profile

检查增加别名是否生效:alias mysh

尝试执行脚本:mysh

使用链接文件创建链接文件:ln -s /root/mysh.sh /usr/bin/mysh

ln为创建链接文件的指令,-s参数为创建软链接文件。/root/mysh.sh为目标文件,即需要创建软链接的文件。/usr/bin/mysh为创建的软链接文件。

通过软链接文件名执行脚本:mysh

题外话

有时候解压一些工具,想尝试运行的时候,不是全路径名执行,就是跳转到执行文件所在的目录,然后./执行文件名。

如果是懒得打./,可以在profile文件的底部添加以下内容:export PATH=$PATH:./。注意这段内容尽量保证在文件最后一行。

总结

在最后汇总以下使用到的指令和工具:

1. 查看文件信息:ls

2. 跳转到某个目录:cd

3. 输出指令:echo

4. 文本编辑器:vim

5. 查看环境变量:env

6. 查看指令或者工具的执行文件所在路径:which

7. 别名指令:alias

8. 配置刷新:source

9. 文件授权:chmod

10. 设置环境变量:export

11. 创建链接文件:ln

linux脚本定义量,Linux上增加自定义脚本的展现量相关推荐

  1. linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库

    Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...

  2. rk android8.1加密,Android 8.1RK平台增加自定义脚本,修改文件权限

    最近RK3326项目上遇到个问题,OTA升级完重启后需要去/cache/recovery目录下读取一个文件,last_flag,读取过程中报错,提示没有权限,很奇怪,我的明明是系统应用,也加了权限还是 ...

  3. 安卓手机安装使用linux,手机linux,轻量linux服务器

    常用app termux 不需root,配置稍微麻烦, utermux 不需要root,termux的拓展版,安装使用比较简单 linuxdeploy 需要root 就我目前实践经验来看: termu ...

  4. 在选择屏幕的标准应用工具条上增加自定义按钮

    sap的选择屏幕的标准工具栏上系统预先定义了5个按钮,他们对应的功能码是FC01-FC05,默认是不激活的.用户可以使用SELECTION-SCREEN FUNCTION KEY i.来激活这5个按钮 ...

  5. linux 信号量定义,【linux】信号量的值定义

    参见文件:/usr/include/bits/signum.h /* Signal number definitions. Linux version. Copyright (C) 1995-2013 ...

  6. shell脚本100 例(上) shell 脚本知识点,学习、进修、面试、居家旅行必备精品.--潜心研究必有所成

    [SHELL 脚本 100 例] 此内容为个人学习笔记,如有雷同,纯属巧合 编写 hello world 脚本 #!/bin/bash echo "hello world" 通过位 ...

  7. linux远程无密码登录,linux ssh无密码登录,远程执行脚本文件

    1. 机器 登录机器A:192.168.100.204 被登录机器B:192.168.100.208 确保防火墙处于关闭状态. 2.配置无密码登录 在主机A的某用户下执行 $ ssh-keygen - ...

  8. linux程序不可抢占,Linux内核抢占机制(preempt)

    早期的Linux核心是不可抢占的.它的调度方法是:一个进程可以通过schedule()函数自愿地启动一次调度.非自愿的强制性调度只能发生在 每次从系统调用返回的前夕以及每次从中断或异常处理返回到用户空 ...

  9. cocos2dx在wp上使用自定义shader

    实践cocos2dx 2.x版本wp上增加自定义shader 根据cocos2dx 的官方文档http://www.cocos2d-x.org/wiki/How_to_update_wp8_shade ...

  10. monkey自定义脚本实践

    monkey专题系列: 1.monkey命令详解 2.android monkey 测试方法实践 上一篇文章monkey测试方法实践中,已经说过monkey隐藏的两个命令,–pck-blacklist ...

最新文章

  1. Linux中source命令的用法
  2. BZOJ2816: [ZJOI2012]网络
  3. 【探路者】贪吃蛇β发布展示(视频展示)
  4. 高职高考难度大吗_成人高考和高考的难度一样吗?成人高考和高考的区别
  5. Java的static,final,代码块,内部类,抽象类,接口等
  6. Java 窗口菜单
  7. MySQL5.7之开启远程连接
  8. 从USB驱动器运行Windows 10
  9. XP框架的另外选择→太极
  10. pic12f1823单片机入门_PIC单片机C语言入门实例
  11. 微信公众号迁移保持OPENID不变新老账户粉丝迁移问题
  12. 思科arp欺骗攻击,cdp攻击,DHCP攻击实验命令笔记
  13. CMake入门使用(一)安装及HelloWorld的构建
  14. vue生命周期学习(watch跟computed)
  15. 基于Java的Minecraft游戏后端自定义插件 08VexView界面绘制与按钮和扩展VexView事件使用
  16. Redmi 智能电视 X 2022 评测
  17. 中规中矩的linux安装redis
  18. echarts的x轴自动动态刷新
  19. ❥关于C++之写入/读取文本文件
  20. Mysql主从(主从不同步解决办法,常见问题及解决办法)

热门文章

  1. 自己写的一个 游标 实例
  2. 10.这就是搜索引擎:核心技术详解 --- 网页去重
  3. 50. 避免重定向(11)
  4. 88. cdata , dtd
  5. e.style.opacity 通过javascript调用元素的样式属性
  6. Django 分页 以及自定义分页
  7. accp8.0转换教材第4章MySQL高级查询(二)理解与练习
  8. Eclipse中如何安装Spring Tool Suite(STS)
  9. 图解 TCP IP 协议:三次握手、四次挥手
  10. C# 自己绘制报表,GDI你会用吗?