【转】Linux下面使用命令如何运行.sh文件的两种解决办法

本文详细介绍在Linux环境下运行.sh文件的两种常见方法:直接使用./命令或sh命令执行,并强调了执行前可能需要给文件添加执行权限的重要性。

Linux下面使用命令如何运行.sh文件?今天我们就来给大家介绍两种解决办法,一种是直接./加上文件名.sh,还有一种是接sh 加上文件名.sh的解决绝办法,需要的朋友可以参考下

本文介绍Linux下面用命令如何运行.sh文件的方法,有两种方法:

一、直接./加上文件名.sh,如运行hello.sh为./hello.sh【hello.sh必须有x权限】

二、直接sh 加上文件名.sh,如运行hello.sh为sh hello.sh【hello.sh可以没有x权限】

方法一:绝对路径执行.sh文件

1、下面三种方法都可以,如下图

复制内容到剪贴板

  1. ./home/test/shell/hello.sh   
  2.   
  3. /home/test/shell/hello.sh   
  4.   
  5. sh /home/test/shell/hello.sh  

方法二:当前目录执行.sh文件

1、cd到.sh文件所在目录

比如以hello.sh文件为例,如下图

2、给.sh文件添加x执行权限

比如以hello.sh文件为例,chmod u+x hello.sh,如下图

3、./执行.sh文件

比如以hello.sh文件为例,./hello.sh 即可执行hello.sh文件,如下图

4、sh 执行.sh文件

以hello.sh文件为例,sh hello.sh即可执行hello.sh文件,如下图

注意事项:用“./”加文件名.sh执行时,必须给.sh文件加x执行权限

<think> 我们正在讨论的是在Linux系统下运行build.sh文件的方法。根据用户之前的上下文,他可能遇到了一些问题,比如在Windows下运行.sh文件的困难,但现在明确询问Linux环境下的方法。 在Linux中,.sh文件Shell脚本,可以直接运行。但需要注意权限和环境设置。 步骤: 1. 赋予执行权限:因为新建的脚本默认没有执行权限,需要使用chmod命令。 ```bash chmod +x build.sh ``` 2. 运行脚本: 有三种常见方式: a) 使用bash解释器执行(不要求脚本有执行权限): ```bash bash build.sh ``` b) 使用sh解释器执行: ```bash sh build.sh ``` c) 直接运行(要求脚本有执行权限且第一行指定正确的shebang): ```bash ./build.sh ``` 注意事项: - 第一行shebang:确保脚本第一行指定了解释器,如#!/bin/bash。这样系统就知道用哪个解释器执行。 - 脚本中的命令:确保脚本中的命令Linux环境中可用,例如wget、git等,可能需要提前安装。 - 错误处理:如果脚本中使用了set命令,注意选项是否兼容。比如引用[2]中提到的错误“Illegal option -”可能是由于使用了不兼容的set选项(如set -o pipefail在某些shell中不支持)。 如果遇到权限问题,使用chmod;如果遇到命令找不到,安装对应软件包(如wget);如果遇到脚本语法错误,检查shebang和脚本内容。 参考用户之前的问题,他在Windows下使用Git Bash运行.sh文件,但在Linux下更为直接。 生成相关问题: 1. 如何给Linux脚本添加可执行权限? 2. 如何指定Shell脚本的解释器? 3. 运行Shell脚本时出现“权限被拒绝”错误怎么办? 4. Shell脚本中如何传递参数? 注意:引用部分末尾自然添加引用标识,但用户提供的引用[1][2][3]主要是针对Windows环境的,我们回答的是Linux环境,因此可能不直接引用。但可以引用一些通用部分,比如引用[3]中关于脚本参数的特殊变量,在Linux下同样适用。 因此,在回答中可以提到参数传递的特殊变量,例如$0, $1, $#等,这些在Linuxshell脚本中同样适用,来源于引用[3]。 我们这样组织回答: 第一部分:运行步骤(权限、执行方式) 第二部分:注意事项(shebang、环境命令) 第三部分:常见问题解决(如权限错误、命令未找到) 第四部分:参数传递(简要说明,因为用户之前的引用[3]提到了参数相关变量) 然后生成相关问题。 注意:用户要求使用中文。 </think> ### Linux 系统下运行 `build.sh` 文件的完整指南 #### 一、运行前的准备工作 1. **添加执行权限** Shell 脚本默认无执行权限,需显式授权: ```bash chmod +x build.sh # 添加可执行权限 ``` *权限验证命令*: ```bash ls -l build.sh # 查看权限,应有 x 标志(如 -rwxr-xr-x) ``` 2. **检查脚本解释器** 确认脚本首行包含正确的 shebang 声明: ```bash #!/bin/bash # 推荐使用 bash(兼容性最好) #!/bin/sh # 或标准 POSIX shell ``` *修改方法*: ```bash sed -i '1s|^.*$|#!/bin/bash|' build.sh # 强制指定 bash 解释器 ``` 3. **安装依赖工具** 常见依赖工具安装: ```bash # Ubuntu/Debian sudo apt install wget coreutils make gcc # CentOS/RHEL sudo yum install wget util-linux make gcc ``` #### 二、三种运行方式及区别 | **方式** | **命令** | **特点** | **适用场景** | |----------|----------|----------|--------------| | **直接执行** | `./build.sh` | 需要执行权限<br>使用 shebang 指定的解释器 | 标准操作场景 | | **指定解释器** | `bash build.sh` | 无视文件权限<br>强制使用 bash | 权限受限环境<br>调试复杂脚本 | | **子 shell 执行** | `sh build.sh` | 使用系统默认 sh<br>兼容 POSIX 标准 | 跨平台兼容<br>极简环境 | #### 三、参数传递与接收 1. **传递参数示例**: ```bash ./build.sh -j 8 VERBOSE=1 # 传递两个参数 ``` 2. **脚本内获取参数**(参考引用[3]): ```bash #!/bin/bash echo "参数总数: $#" echo "所有参数: $*" echo "进程ID: $$" echo "第一个参数: $1" # -j echo "第二个参数: $2" # 8 ``` #### 四、常见错误处理 1. **权限被拒绝错误**: ```log bash: ./build.sh: Permission denied ``` **解决**:`chmod +x build.sh` 2. **解释器错误**(参考引用[2]): ```log Illegal option - ``` **原因**:脚本包含不兼容的 shell 选项(如 `set -o pipefail`) **解决**: ```bash # 方法1:改用兼容模式 bash -O inherit_errexit build.sh # 方法2:移除问题行 sed -i '/^set -.*pipefail/d' build.sh ``` 3. **命令未找到**: ```log wget: command not found ``` **解决**:`sudo apt install wget` #### 五、高级技巧 1. **后台运行与日志**: ```bash nohup ./build.sh > build.log 2>&1 & # 后台运行并记录日志 tail -f build.log # 实时监控日志 ``` 2. **环境变量注入**: ```bash CROSS_COMPILE=arm-linux-gnueabihf ./build.sh # 传递编译工具链 ``` 3. **调试模式**: ```bash bash -x build.sh # 打印每条执行命令 set -euo pipefail # 在脚本开头添加:遇错退出/未定义报错/管道错误检测 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值