我已经从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
答案 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'
$