linux脚本中的source不执行,用sh、./、source执行Shell脚本到底有何不同?

要解答这个看似简单的问题,需要先复习一下Linux系统里“命令”这个词的含义。

Linux系统中的命令有两种:一是内置命令,是Shell与生俱来的一部分,比如最基础的cd、echo、kill等;二是外部命令,包含已编译的实用程序以及Shell脚本两种,它们两者又可以统称为可执行文件(executables)。我们平时常用的大多数看起来像“内置(自带)命令”的命令,其实都是/usr/bin及其他目录下的已编译程序,如ls、ps、grep等。

可见,外部命令的实体并不存在于Shell中,而是在调用时才从对应的位置加载。如果用户调用命令时没有提供路径的话,Shell通过PATH环境变量来定位外部命令的路径。

# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8.0_172/bin:/usr/java/jdk1.8.0_172/jre/bin

如果在PATH给定的路径仍然找不到命令,Shell就会返回"command not found"。这也就解释了为什么在Linux下安装完JDK之后,总是要将$JAVA_HOME/bin写入PATH——用户肯定不想每次调用JDK提供的命令时都要先cd到JDK的安装路径,或者把路径写得清清楚楚。

按照上文所述,我们平时自己写的Shell脚本也是外部命令。下面在/tmp/test目录下直接创建一个文件:touch my_script.sh,并在其中写几句简单的话。

#!/bin/sh

echo "Hello World!"

echo "Parameter 1 is: $1"

echo "M

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值