Домашний каталог на самом деле не является кроссплатформенной концепцией. Ваше предположение о корне каталога профиля (% USERPROFILE%) является справедливой аналогией, но в зависимости от того, что вы хотите сделать, имея каталог, вам может потребоваться один из каталогов данных приложения или пользовательские мои документы. В UNIX вы можете создать скрытый «.myapp» в домашнем каталоге, чтобы сохранить ваши файлы, но это не так в Windows.
Лучше всего написать конкретный код для каждой платформы, чтобы попасть в каталог, который вы хотите в каждом конкретном случае. В зависимости от того, насколько правильно вы хотите быть, может быть достаточно использовать env vars: HOME в UNIX, USERPROFILE или APPDATA (в зависимости от того, что вам нужно) в Windows.
По крайней мере, в UNIX (кто-нибудь из Windows хочет прокомментировать?), Обычно рекомендуется использовать переменную среды HOME, если она установлена, даже если она не соответствует каталогу, указанному в файле паролей. Затем, в нечетном случае, когда пользователи хотят, чтобы все приложения считывали свои данные из другого каталога, он все равно будет работать.