【发布时间】:2015-12-23 01:13:07
【问题描述】:
我的简单脚本是这样的:
#!/bin/sh
DEF=.file_name_with_a_leading_dot.sh
. ${DEF}
注意最上面一行的 /bin/sh。 当我运行那个简单的脚本时,我得到一个找不到文件的错误。 但是,如果我将第一行更改为 #!/bin/bash,那么脚本会在当前目录中找到该文件。
但是,在我的 Ubuntu linux 笔记本电脑上,我看到 /bin/sh 是 /bin/bash 的符号链接。那么,为什么我的脚本会有不同的行为呢?
另外,我可以这样运行脚本:
/bin/bash ./script.sh
没关系。
那么,我错过了什么?
【问题讨论】:
-
您可以在这里查看:stackoverflow.com/questions/5725296/…。基本上,
bash和sh不是一回事 -
当被称为
/bin/sh时,Bash 以兼容模式启动 -
但是为什么这意味着它找不到文件?我可以重现这个。
-
sh 模式的工作方式似乎有所不同。/.file 工作......
-
请记住,在编写问题标题时,StackOverflow 的目标是建立一个知识库——我们可能有 数百 个关于 bash 和POSIX sh,因此对于人们在该知识库中搜索时可以实际找到和区分的问题,它需要有一个反映它所询问的 特定 差异的标题。我已尝试进行相应的编辑。