为什么带有“#!/ bin / sh” shebang的脚本可以使用仅bash功能?

时间:2018-06-26 23:00:40

标签: bash shell posix git-bash

当我运行以下脚本时:

#!/bin/sh

declare path="my.path"

if [[ "$path" =~ \. ]] ; then
    echo "yes"
else
    echo "no"
fi

我打印了yes

但是,如果我没记错的话,declare[[ ]]在POSIX shell中不可用;那么这个脚本怎么不会抛出任何错误呢?

我在Windows的git上运行脚本,它可以解释这种奇怪的行为吗?

1 个答案:

答案 0 :(得分:4)

/bin/sh是指向您实际shell的链接。这并不意味着您正在运行纯POSIX。 Git for windows homepage非常清楚您正在运行bashgit-bash标签也是如此。

即使在Linux上,/bin/sh仍然可以成为bash:

ls -la /bin/sh
lrwxrwxrwx. 1 root root 4 Mar 27 09:33 /bin/sh -> bash