henry_flower: A melancholy wolf (Default)
henry_flower ([personal profile] henry_flower) wrote2024-11-18 03:32 pm

/bin/sh errexit ув fbsd

FreeBSD is very compatible with standards such as POSIX.
-- FreeBSD Developer Handbook

На будь-якому лайнаксі з будь-яким sh-похідним шелом, скрипта нижче друкує hello world:

$ cat -n 1.sh
     1  set -e
     2
     3  hello() {
     4      false
     5      echo hello
     6  }
     7
     8  true | hello && echo world

$ sh 1.sh
hello
world

fbsd зі своїм /bin/sh робить потужний кєк на рядку 4:

$ sh 1.sh
$ echo $?
1
$ sh -x 1.sh
+ set -e
+ true
+ hello
+ false
$ uname -rs
FreeBSD 14.1-RELEASE-p5

Їхній sh(1) має ось таке речення ув роздлі про set -e:

"If a shell function is executed and its exit status is explicitly tested, all commands of the function are considered to be tested as well."

Я, звичайно, не є перший хто це випадково помітив: схожі 4 скарги ув їхній баґзилі date back to 1999-2005, всі обнадійливо позначені як FIXED.

Хто і навіщо fbsd використовує для роботи, окрім контори Соні та ображених на Торвальдса русскіх, залишається незрозумілим.