Если я ввожу
echo home
Я буду только видеть слово "домой", как произведено а не "дом/пользователя"
Я - единственный пользователь на этой машине и имею пароль.
Почему я получаю неправильный вывод и что я должен изменить для отображения корневого каталога моего пользователя?
TL; DR Переменные в Linux запускается с $
.
команда
echo $HOME
, Если Вы введете в
printenv
, то она покажет Вам все переменные и чему они равняются.
Или
printenv | grep '^HOME='
или еще много можно попробовать:
terrance@terrance-ubuntu:~$ echo ~
/home/terrance
terrance@terrance-ubuntu:~$ printf "%b \n" ~
/home/terrance
terrance@terrance-ubuntu:~$ printf "%b \n" $HOME
/home/terrance
Для печати переменной среды, необходимо использовать $
знак прежде. Таким образом, в чем Вы выполняете
echo home
это просто распечатает слово домой, так как оболочка не развернет переменную домой, так как это не запускается с $
знак, и это должно быть использовано для своей выгоды.
Таким образом, чтобы иметь вывод необходимо работать:
echo $HOME
Для списка всех переменных среды, можно использовать команду env
.
Также можно получить тот же результат echo $HOME
путем выполнения команды:
env | grep '^HOME'
Теперь существуют некоторые случаи при создании нового пользователя без корневого каталога это может произойти при использовании команды useradd
без -d
опция или не объявляя переменные HOME_DIR
и BASE_DIR
. Таким образом, если Вы создаете этого пользователя, использующего useradd
управляйте, чтобы это имело бы место.
Некоторые полезные ссылки:
Если Вы явно не создали свою учетную запись пользователя без дома, все пользователи должны получить корневой каталог. В терминале существует разнообразие, Вы могли получить доступ к нему. cd
один, cd ~
тот. Только для наблюдения пути к нему сделать cd; pwd
, или echo ~
, или echo $HOME
, или
awk -F ':' -v myusername=$(whoami) ' $0~myusername { print $6 }' /etc/passwd
Этот последний использует вывод whoami
управляйте для поиска соответствующей строки в /etc/passwd
файл и печать 6-й объект в той строке с: как разделитель полей)