74

Я хочу получить домашний каталог любого пользователя с эхо

echo ~puchuu
>> /home/puchuu

Но я не могу использовать переменную

echo ~$USER
>> ~puchuu
echo `echo ~$USER`
>> ~puchuu

5 ответов5

79

Вы можете использовать eval:

eval echo ~$USER

Но см. Комментарий Эндрю и ответ Гленна ниже.

57

Это может работать для вас:

homedir=$( getent passwd "$USER" | cut -d: -f6 )

Это также будет работать с пользователями, которые не являются вами. Например,

homedir=$( getent passwd "someotheruser" | cut -d: -f6 )
11

Кажется, вы тот пользователь - почему бы и нет

echo $HOME

?

1

Я не знаю, помогает ли это, но размещение тильды вне выражения работает на ZSH, но не на Bash:

echo ~`echo $USER`
0

После входа в систему запустите cd чтобы перейти в свой домашний каталог, затем запустите pwd чтобы распечатать рабочий каталог.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .