Здрасти. Утренний мини-пост, вечером ещё закину чтива.

Как ты знаешь, утилита false всегда возвращает ошибку — код завершения 1. Давай запустим и убедимся:

false
echo $?
1

Всё правильно. В этом примере была запущена встроенная команда false в оболочке Bash. Но, как мы знаем, существует альтернативная реальность и альтернативная команда false, которая лежит тут:

whereis false
false: /usr/bin/false

Теперь сделаем такое:

env false --help

Используя env, мы запустили альтернативную версию false. И что мы видим? Вывалилась страница help. Очевидно? Ага!

А теперь давай посмотрим код выхода после вывода help:

echo $?
1
Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Чо, блядь? Почему единица? Команда по выводу справки отработала корректно? Корректно! Ожидаем ноль? Ага! Но вот хуюшки! Получите единицу!

Баг? Не думаю. Давай проверим на выводе версии:

env false --version
echo $?
1

Неа, не баг, команда false настолько суровая, что возвращает единицу там, где это не нужно.

Специально ли это сделали, никто не знает. Но факт остаётся фактом.

Посмотреть, чем является команда, можно с помощью команды type:

type -a false

false is a shell builtin
false is /usr/bin/false
false is /bin/false
Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Вот такие вот перлы порой случаются. Ошибка и точка!