Как делают я правильно отображаю содержание переменной среды (здесь: корневой каталог текущего пользователя)?

Если я ввожу

echo home

Я буду только видеть слово "домой", как произведено а не "дом/пользователя"

Я - единственный пользователь на этой машине и имею пароль.

Почему я получаю неправильный вывод и что я должен изменить для отображения корневого каталога моего пользователя?

0
задан 23 July 2015 в 10:52

3 ответа

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 
9
ответ дан 29 July 2019 в 22:36

Для печати переменной среды, необходимо использовать $ знак прежде. Таким образом, в чем Вы выполняете

echo home

это просто распечатает слово домой, так как оболочка не развернет переменную домой, так как это не запускается с $ знак, и это должно быть использовано для своей выгоды.

Таким образом, чтобы иметь вывод необходимо работать:

echo $HOME

Для списка всех переменных среды, можно использовать команду env.

Также можно получить тот же результат echo $HOME путем выполнения команды:

env | grep '^HOME'

Теперь существуют некоторые случаи при создании нового пользователя без корневого каталога это может произойти при использовании команды useradd без -d опция или не объявляя переменные HOME_DIR и BASE_DIR. Таким образом, если Вы создаете этого пользователя, использующего useradd управляйте, чтобы это имело бы место.

Некоторые полезные ссылки:

4
ответ дан 29 July 2019 в 22:36

Если Вы явно не создали свою учетную запись пользователя без дома, все пользователи должны получить корневой каталог. В терминале существует разнообразие, Вы могли получить доступ к нему. cd один, cd ~ тот. Только для наблюдения пути к нему сделать cd; pwd, или echo ~, или echo $HOME, или

awk -F ':' -v myusername=$(whoami) ' $0~myusername  { print $6 }' /etc/passwd

Этот последний использует вывод whoami управляйте для поиска соответствующей строки в /etc/passwd файл и печать 6-й объект в той строке с: как разделитель полей)

2
ответ дан 29 July 2019 в 22:36

Другие вопросы по тегам:

Похожие вопросы: