Здрасти. Утренний мини-пост, вечером ещё закину чтива.
Как ты знаешь, утилита false всегда возвращает ошибку — код завершения 1. Давай запустим и убедимся:
false
echo $?
1
Всё правильно. В этом примере была запущена встроенная команда false в оболочке Bash. Но, как мы знаем, существует альтернативная реальность и альтернативная команда false, которая лежит тут:
whereis false
false: /usr/bin/false
Теперь сделаем такое:
env false --help
Используя env, мы запустили альтернативную версию false. И что мы видим? Вывалилась страница help. Очевидно? Ага!
А теперь давай посмотрим код выхода после вывода help:
echo $?
1
Баг? Не думаю. Давай проверим на выводе версии:
env false --version
echo $?
1
Неа, не баг, команда false настолько суровая, что возвращает единицу там, где это не нужно.
Специально ли это сделали, никто не знает. Но факт остаётся фактом.
Посмотреть, чем является команда, можно с помощью команды type:
type -a false
false is a shell builtin
false is /usr/bin/false
false is /bin/false








Комментарии