Различные оболочки могут или не могут справиться с этим по-разному, но Джонатан получил самое близкое, не выходя и не говоря это. Оболочка расширяет «~» до того, что хранится в переменной окружения $ HOME. Оболочка расширяет ~ username до того, что указано в поле оболочки / etc / passwd для данного имени пользователя. Если вы не переопределите его, оболочка (или ssh, в зависимости от реализации) установит $ HOME в качестве домашнего поля из / etc / passwd, поэтому они оба одинаковы (при условии, что вы «username») пока вы не измените один.
Относительно того, почему вы видите ~ в ssh ...
В приглашении говорится, что «~» является вашим текущим каталогом, скорее всего, потому что вы используете Bash в качестве оболочки и значение $ PS1 (строка приглашения, которую вы видите - она установлена в / etc / profile или / etc / profile .d / *, скорее всего) где-то содержит \ w или \ W. Строка \ w в приглашении показывает текущий каталог и сворачивается в «~», когда вы находитесь в каталоге, указанном в $ HOME. Вот небольшая демонстрация, начинающаяся с моего homedir - обратите внимание, как «\ w» заменяется либо текущим каталогом, либо символом ~, в зависимости от того, какое значение HOME установлено. Также обратите внимание, что косая черта не работает - HOME не может заканчиваться косой чертой, чтобы это работало. :)
danny@machine ~ > export PS1='\w > ' # change my prompt (effective on next line)
~ > cd /tmp # move to /tmp to demonstrate
/tmp > export HOME=/tmp/ # set HOME to include trailing /
/tmp > export HOME=/tmp # try again without trailing /
~ > # notice that this works
~ > cd /home/danny # back to homedir
/home/danny > export HOME=/home/danny # see how it's /home/danny, not ~
~ > export PS1='danny@machine \w > ' # after resetting $HOME, it should work ok
danny@machine ~ > # hooray!