2017-02-17 85 views
1

我有一個簡單的shell腳本:爲什麼我無法使用執行shell腳本。 ./test.sh?

#!/bin/bash 
echo test 

我可以成功執行腳本:

./test.sh 

source ./test.sh 

但是,下面拋出一個錯誤:

. ./test.sh 

錯誤:

.: Command not found. 

什麼可能導致錯誤?這對el capitan(這是升級)有效,但不適用於塞拉利昂。在過去的幾個主要版本中,終端或默認shell是否有所改變?

我使用默認終端運行macOS 10.12.3 - 這是一個乾淨的安裝而不是升級(升級掛在以前的shell設置上)。

+0

你可以試試它嗎? test.sh','POSIX'來源推薦這種方式。 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#dot – Inian

+0

我仍然得到。:command not found – csilk

+1

@Inian:POSIX說:「如果文件不包含,shell將使用PATH指定的搜索路徑來查找包含文件的目錄「,這意味着_must_使用路徑前綴'。/'來源_current_目錄中的文件。 '。 test.sh'不應該查看當前目錄,('bash',但'dash','ksh'和'zsh'不符合POSIX標準)。 – mklement0

回答

3

這聽起來像你切換默認的shell比bash其他的東西,可能csh,其中(一).沒有內置的命令(僅source是),和(b),即使它是,無論如何你都無法加載Bash代碼進入當前會話。

要檢查您的默認外殼是什麼,請運行echo $SHELL

運行chsh -s /bin/bash切換回bash作爲您的默認外殼。

+1

現在輸出讀取/ bin/bash。所以它看起來像我的公司用來設置新的macbook腳本之一改變了默認的外殼 - 非常感謝您的幫助。我會接受你的回答。 – csilk