Ось якийсь код, який робить щось інше в POSIX sh та Bash:
hello &> world
Чи це для вас "недійсне", я не знаю.
У Bash, він перенаправляє як стандартний висновок і стандартну помилку з hello
в файл world
. У POSIX sh
він працює hello
у фоновому режимі, а потім робить порожнє перенаправлення на world
, обрізаючи його (тобто воно трактується як& >
).
Існує маса інших випадків, коли розширення Bash роблять свою справу під час запуску bash
та матимуть різний ефект у чистому POSIX sh
. Наприклад, розширення дужок - це ще одне, і воно теж працює те саме в режимі POSIX Баша, і ні.
Що стосується статичних синтаксичних помилок, у Bash є як зарезервовані слова (наприклад, так [[
і time
), не вказані POSIX, такі, що [[ x
є дійсним кодом оболонки POSIX, але помилка синтаксису Bash та історія різних помилок несумісності POSIX, які можуть спричинити помилки синтаксису, наприклад, з цього питання :
x=$(cat <<'EOF'
`
EOF
)
bash: line 2: unexpected EOF while looking for matching ``'
bash: line 5: syntax error: unexpected end of file
Синтаксичні помилки - це досить небезпечне визначення "недійсного" за будь-яких обставин, де це має значення, але воно є.