2017-03-23 16 views
0

所以我試圖創建一個函數來運行終端。運行bash文件工作,使用源不是

我創建以下文件的bash:myfile.sh

#!/bin/bash 

fun(){ 
    echo "this is a function" 
} 
fun 

運行與bash myfile.sh作品完美的文件。

如果我嘗試使用source myfile.sh,所以我可以從終端運行該函數,它抱怨括號:Badly()的。

我忘了什麼嗎?我在網上發現了很多指南,並且複製並粘貼了代碼,但仍無法獲取文件。

回答

1

當我在啓動csh而不是bash後執行source myfile.sh時,我能夠重現此問題。您可以使用命令echo $SHELL檢查當前的shell。

如果您希望bash腳本在採購時能夠正常工作,您需要將chsh的shell轉換爲/bin/bash

+1

'$ SHELL' does * not *包含當前shell的名稱;它包含當前用戶的登錄shell的名稱。 – chepner

+0

我目前的$ SHELL是/ bin/tcsh可能會改變/ bin/bash破壞已經定義的任何東西(也許阻止我運行一些已定義的函數)。我在我的工作計算機上,所以我會問一下,看看是否有任何理由默認shell是tcsh –

+1

@Anthony:爲什麼不嘗試在腳本'#!/ bin中更改shebang到登錄shell?/tcsh'? –