在bash脚本中包含文件

时间:2014-03-13 09:05:54

标签: bash sh

我已经从unifi文档中复制了一个脚本

#!/bin/sh

## define required variables
username=admin
password=admin
baseurl=https://localhost:8443

## include the API library
. unifi_sh_api

unifi_login
# unifi_authorize_guest <mac> <minutes> [up=kbps] [down=kbps] [bytes=MB]
unifi_authorize_guest $1 $2
unifi_logout

这是脚本,这是文件结构:

foo@site:/home/foo# ls
unifi.sh  unifi_sh_api

这是我尝试执行文件时得到的结果。是什么导致这个?该文件显然位于正确的文件夹中。

foo@site:/home/foo# sh unifi.sh
unifi.sh: 9: .: unifi_sh_api: not found

1 个答案:

答案 0 :(得分:1)

您正在bash调用/bin/sh,将bash置于sh - 兼容模式。 POSIX standard说:

  

如果file不包含斜杠,shell应使用PATH指定的搜索路径来查找包含文件的目录。

这意味着除非它是$PATH

的一部分,否则不会搜索当前目录
$ /bin/sh -c '. test.sh'
/bin/sh: 1: .: t.sh: not found

$ /bin/sh -c 'PATH=".:$PATH"; . test.sh'
$
但是,

bash似乎在搜索当前目录:

$ /bin/bash -c '. test.sh'
$