2014-03-13 128 views
1

我從UNIFI文檔包括在bash腳本文件

#!/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 

這是腳本,這是文件結構中複製的腳本:

[email protected]:/home/foo# ls 
unifi.sh unifi_sh_api 

這是我所得到的,當我嘗試執行該文件。什麼會導致這種情況?該文件顯然是在正確的文件夾中。

[email protected]:/home/foo# sh unifi.sh 
unifi.sh: 9: .: unifi_sh_api: not found 
+2

,如果你有什麼使用'source'而不是'''? – fedorqui

+1

添加當前目錄。在PATH中並導出它。然後執行將工作.. – Raghuram

+1

@fedorqui我認爲「源」只是點(「。」)的別名,所以我不明白爲什麼你會建議交換它們。如果你有一分鐘​​請你介意給我啓迪一下嗎? –

回答

1

要調用bash/bin/sh這使bashsh -compatibility模式。 POSIX standard表示:

如果文件不包含斜槓,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' 
$