运行bash文件工作,使用源代码不';T

运行bash文件工作,使用源代码不';T,bash,shell,Bash,Shell,所以我试图创建一个函数来运行终端 我创建了以下bash文件:myfile.sh #!/bin/bash fun(){ echo "this is a function" } fun 使用bash myfile.sh运行该文件非常有效 如果我试图使用source myfile.sh以便从终端运行函数,它会抱怨括号:位置不正确() 我忘了什么吗?我在网上找到了许多指南,复制并粘贴了代码,但仍然无法找到文件的来源。在启动csh而不是bash后,当我执行source myfile.sh时,我能

所以我试图创建一个函数来运行终端

我创建了以下bash文件:myfile.sh

#!/bin/bash

fun(){
   echo "this is a function"
}
fun
使用
bash myfile.sh
运行该文件非常有效

如果我试图使用
source myfile.sh
以便从终端运行函数,它会抱怨括号:位置不正确()


我忘了什么吗?我在网上找到了许多指南,复制并粘贴了代码,但仍然无法找到文件的来源。

在启动
csh
而不是
bash
后,当我执行
source myfile.sh
时,我能够重现这个问题。您可以使用命令
echo$shell
检查当前shell


如果希望bash脚本在源代码时工作,则需要
chsh
您的shell到
/bin/bash

$shell
不包含当前shell的名称;它包含当前用户登录shell的名称。我当前的$shell是/bin/tcsh,如果将其更改为/bin/bash,可能会破坏已定义的任何内容(可能会阻止我运行某些已定义的函数)。我在我的工作计算机上,所以我会四处询问,看看是否有任何理由使用默认shelltcsh@Anthony:为什么不尝试在脚本
#中将shebang更改为您的登录shell呢/bin/tcsh
?感谢信息人员,更改登录shell既不通过chsh也不通过YPCSH起作用。我将改变我的脚本以使用tcsh来保证@l'l'l所指出的安全,或者手动运行bash(bash&)。手动运行bash安全吗?这个答案确实指出了问题所在,所以我将把它标记为正确答案。谢谢提醒,您的脚本是bash编写的。