Мне ничего не известно о том, что на самом деле используются или ожидаются строки окружения, не содержащие =
. Как правило, это патологические случаи.
GNU env
или printenv
точно напечатает их.
Для некоторых языков эти строки будут недоступны. Например, если вы вызываете perl
со строкой env foo
, она не будет отображаться в keys(%ENV)
, хотя perl
все равно будет передавать ее вместе с выполняемыми командами (, если вы не сбросите весь %ENV
хэш ).
Таким образом, можно было бы использовать это, чтобы обойти некоторую очистку среды (, хотя надлежащая санация среды должна начинаться с пустой среды ).
Некоторые инструменты (, такие как некоторые оболочки ), удаляют их из среды, которую они получают, и не передают их вместе с выполняемыми ими командами, так что в целом не стоит полагаться на это.
Помимо=
-меньшего количества строк env, к другим патологическим случаям относятся строки env с дублирующимся именем переменной (, такие как foo=good
и foo=bad
, переданные в envp
), которые уже рассматривались как вызывающие уязвимости (например CVE -2016 -2381 ), и строки env типа=foo
(пустое имя переменной; обратите внимание, что POSIX putenv()
/getenv()
может устанавливать/получать эту переменную, но неsetenv()
).
Система *nix не делает различий между файлом и каталогом, при этом каталог — это просто файл, содержащий имена других файлов (и номера инодов ). Следовательно, по мере того, как содержимое каталога растет вместе с количеством содержащихся в нем файлов, размер блоков (), используемых для хранения этого содержимого, также будет расти. Насколько мне известно. он будет не уменьшаться при удалении файлов в этом каталоге.