Почему сценарий с "#! / Bin / sh" шебангом может использовать только функции bash? - PullRequest
0 голосов
/ 27 июня 2018

Когда я запускаю следующий скрипт:

#!/bin/sh

declare path="my.path"

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

Я напечатал yes.

Но если я не ошибаюсь, declare и [[ ]] недоступны в оболочке POSIX; так почему же этот скрипт не выдает никакой ошибки?

Я запускаю скрипт на git для Windows, может ли он объяснить это странное поведение?

1 Ответ

0 голосов
/ 27 июня 2018

/bin/sh - это ссылка на вашу реальную оболочку. Это не значит, что вы используете чистый POSIX. Домашняя страница Git для Windows очень ясно показывает, что вы используете bash, как и ваш git-bash тег.

Даже в Linux /bin/sh все еще может быть bash:

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