Команда `env` в Linux используется для установки переменных окружения для выполнения других команд. Однако, команда `cd` является встроенной командой в оболочке (shell), а не внешней программой собственно Linux, поэтому команда `env` не может изменить текущий рабочий каталог с помощью команды `cd`.
Команда `env -v HOME=/tmp cd` не работает, потому что после выполнения команды `env`, оболочка запускает новую команду `cd` в отдельном процессе. После выполнения команды `cd`, процесс завершается и текущий рабочий каталог в основной оболочке не меняется.
Чтобы правильно использовать переменные окружения в Linux, нужно установить переменные окружения перед выполнением команды. Например, вместо `env -v HOME=/tmp cd` можно использовать `HOME=/tmp cd`.
Относительно команды `env -v HOME=/tmp echo $HOME`, команда `echo $HOME` выполняется в отдельном процессе, который не запускается в контексте установленной переменной окружения `HOME`.