执行shell脚本的方式

一、在新的进程中运行Shell脚本

以下3种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。

1、./test.sh

  1. 脚本第一行需加:#/bin/bash(#/bin/sh),让系统查找正确的解释器,也可以不写,用默认的shell,养成良好的编程习惯,最好还是加上,指出用来解释这个脚本的程序。
  2. 给脚本添加可执行权限:chmod +x test.sh
  3. ./表示当前目录,整条命令的意思是执行当前目录下的 test.sh 脚本。如果不写./,Linux 会到系统路径(由 PATH
    环境变量指定)下查找 test.sh,而系统路径下显然不存在这个脚本,所以会执行失败。

2、bash test.sh或 /bin/bash test.sh

  1. /bin/bash 以绝对路径执行
  2. 不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)
    因为该方法是将test.sh作为参数传给sh(bash)命令来执行的。这时不是test.sh自己来执行,而是被人家调用执行,所以不要执行权限。

3、sh test.sh或 /bin/sh test.sh

  1. 使用方法同bash
  2. Linux 的 Shell 种类众多,在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again
    Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash

二、在当前进程运行Shell脚本

上面3种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而以下方法则是在当前shell中执行的。

1、source test.sh

2、. test.sh

  1. 使用 source 命令不用给脚本增加执行权限;
  2. source命令通常用命令 . 来替代;

三、如何判断是不是在当前Shell进程中执行脚本?

1、test.sh内容如下:

#/bin/bash
echo ‘hello’
echo $$

2、借助$$变量来输出进程的 PID
使用source test.sh 、 . test.sh ,进程PID一致
使用./test.sh 、 bash test.sh 、 sh test.sh,进程PID不一致
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值