Оболочка выполняет расширение тильды. readlink
doesn't. Bash не будет расширять тильду внутри кавычек.
readlink -f $a
не делает того, что вы хотите, поскольку расширение тильды происходит до расширения переменной, то есть переменная расширяется до ~
, но эта тильда не будет расширена дальше.
Порядок выполнения действий в Bash следующий: расширение скобок, расширение тильды, расширение параметров и переменных, команда подстановка, арифметическое расширение, разделение слов и расширение имени пути расширение.
Использование $HOME
может быть предпочтительнее использования тильды при некоторых обстоятельствах, поскольку она ведет себя как любая другая переменная.
Также, пожалуйста, не работайте, войдя в систему как root...
Нет, теоретически переустановка coreutils не должна быть опасной, и да, она должна вернуть env
.
Однако я бы больше беспокоился о том, почему он вообще пропал. Если вы уверены, что ничего не меняли, и это веб-сервер, то есть, предположительно, открытый для интернета, вы хотите проверить, не была ли ваша система взломана.