linux使用sh执行脚本中有source命令时提示找不到文件

问题

shell脚本a.sh如下:

#!/bin/bash
cd /home/
if [ -f b.sh ];then
source b.sh
fi

使用sh命令执行a.sh:

[root@localhost home]# sh a.sh 
a.sh: line 4: source: b.sh: file not found
原因分析

source 命令找filename是在当前Shell环境中从文件名读取并执行命令,如果filename不包含斜杠,则使用PATH中的文件名查找包含filename的目录。
使用man source查看source使用说明,其中:

source filename [arguments]
              Read  and  execute commands from filename in the current shell environment and return the exit status of the last command exe-
              cuted from filename.  If filename does not contain a slash, file names in PATH are used to find the directory containing file-
              name.   The  file  searched  for  in  PATH  need  not be executable.  When bash is not in posix mode, the current directory is
              searched if no file is found in PATH.  If the sourcepath option to the shopt builtin command is turned off, the  PATH  is  not
              searched.   If  any  arguments  are  supplied, they become the positional parameters when filename is executed.  Otherwise the
              positional parameters are unchanged.  The return status is the status of the last command exited within the script  (0  if  no
              commands are executed), and false if filename is not found or cannot be read.
解决方法

以下方式任选其一:

  1. 在source后的filename前加./
  2. 在source后的filename前加上相对路径或绝对路径
  3. 将source的脚本所在的目录加到PATH中
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值