美文网首页js css html
如何让 Shell 脚本全局执行

如何让 Shell 脚本全局执行

作者: 越前君 | 来源:发表于2022-06-25 00:02 被阅读0次
配图源自 Freepik

碰巧前面一篇文章中浅浅介绍了一下 Shell。然后最近刚好要写一个 Shell 脚本去批量去处理一下文件,因此写下来记录一下,尽管思路很简单。

假设我们 ~/Desktop 目录下有一个 Shell 脚本 myscript.sh,如下:

#!/bin/bash
echo "🎉🎉🎉 The first shell script..."

使用 source 命令便可执行此脚本:

$ source ~/Desktop/myscript.sh
🎉🎉🎉 The first shell script...

然后我在想能否将 source 指令也省略掉呢,直接 myscript.sh 这样:

$ cd ~/Desktop
$ myscript.sh
zsh: command not found: myscript.sh

然后 Shell 解析器将 myscript.sh 识别成了一个「指令」,而不是一个文件。由于 Shell 脚本的扩展名是可选的,因此尝试将 .sh 扩展名去掉试试:

$ myscript
zsh: permission denied: myscript

跟前面有点不一样了,它提示没有权限。哦,原来一个 Shell 脚本只有具备了「可执行权限」方可被执行。那好办,我们将其权限改一改:

$ chmod u+x myscript

其中 chmod 命令用于改变文件或目录的权限,u 表示所有者用户,x 表示执行权限,+ 表示增加权限。

其实通过 Finder 可以观察到其图标变了样(不同系统可能不一样),该图标表示可执行文件。

于是我们兴高采烈地执行了:

$ myscript
zsh: command not found: myscript

可现实却狠狠地打了一巴掌,咋回事!!!原来是要将「可执行文件」所在目录配置到 PATH 环境变量中,因为在终端工具中输入指令的时候,系统会从环境变量 PATH 所包含的路径中「逐一查找」相应的可执行文件,如果最后都找不到的话,就会抛出错误并提示找不到指令。

所以有几种解决方法:

  • 一是,将其拷贝至环境变量 PATH 的某个目录(如 /usr/bin 等)里面,cp ~/Desktop/myscript /bin/myscript(个人不喜欢这样处理)。
  • 二是,创建一个软链接到环境变量 PATH 目录中,比如 ln -s ~/Desktop/myscript /bin/myscript(个人不喜欢这样处理)。
  • 三是,在 Shell 配置文件中,将可执行文件所在目录添加到环境变量 PATH 中即可。就用它吧,毕竟这个只是测试脚本,写完文章是要删掉的。

在 Shell 配置文件中加入 ~/Desktop 路径即可:

export PATH=$PATH:$HOME/Desktop

具体是哪个配置将取决于你使用的是哪一种 Shell,我这里是 zsh,因此用户级别的配置文件是 ~/.zshrc 文件,添加完之后,记得 source ~/.zshrc 刷新变量使其生效。

至此,你就可以在任意目录下执行 myscript 指令了。

$ cd ~
$ myscript
🎉🎉🎉 The first shell script...

这样执行脚本也不用输入那一串长长的地址,舒服多了。

One more thing...

前面我们为了不让 myscript.sh 被识别为一个指令,因此把扩展名删掉了。但如果我们不希望去掉扩展名,可以怎样做呢?毕竟我们在修改脚本的时候,编辑器根据扩展名会有语法高亮、语法提示等好处。很简单,我们修改下 Shell 配置即可:

export PATH=$PATH:$HOME/Desktop
alias myscript="myscript.sh"

没错,配置多一个别名即可。

The end.

相关文章

  • 如何让 Shell 脚本全局执行

    碰巧前面一篇文章[https://www.jianshu.com/p/e708bdc29e40]中浅浅介绍了一下 ...

  • shell基础(一)

    一:shell脚本内容解释器 二:shell脚本的执行方式 三:变量 变量分为:环境(全局)变量和普通(局部)变量...

  • 使用 SHC 加密 Shell 脚本

    如何在Linux环境中加密shell脚本?shell脚本包含密码,不希望其他具有执行权限的人查看shell脚本并获...

  • 执行shell脚本的多个方式

    如何执行shell脚本 问题描述 接着上一篇简书继续分析关于脚本部分的 在该job中让其执行以下shell 发现脚...

  • 从零开始学习Linux(三十一):Shell脚本的执行方式

    本小节我们介绍一下如何执行shell脚本,在讲解如何执行shell脚本之前,先讲解几个简单的命令,编写第一个she...

  • shell编程1.1: 初步认识

    1. 如何执行shell脚本 每个shell脚本第一行一般是#! /bin/bash,代表其实用的shell解释器...

  • shell基础

    shell脚本 1.shell脚本执行方式 1.1 添加执行权 1.2 指定shell命令 2.shell变量 2...

  • Shell -X命令

    shell "-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本...

  • 第一个shell

    编写一个shell脚本 shell脚本的开头一定要指定一个shell解释器 给shell脚本加执行权限 执行she...

  • 多命令处理

    编写shell脚本 执行脚本

网友评论

    本文标题:如何让 Shell 脚本全局执行

    本文链接:https://www.haomeiwen.com/subject/afbbvrtx.html