2

У меня есть пара вопросов:

  1. На ПК я могу получить имя пользователя из переменной окружения USERNAME а на LINUX это USER - какой эквивалент MAC?

  2. Локальная область пользователей в Windows может быть найдена через реестр (или эквивалент), в LINUX вы вводите ~ в командной строке - что такое эквивалент MAC?

Примечание. Я хотел бы извлечь их из переменных среды, если это возможно (из кода).

например Я хочу создать файл в домашней области пользователей на MAC> как мне построить следующую переменную -:

Это то, что я думаю, - кто-нибудь может подтвердить (заметьте, у меня в настоящее время нет MAC передо мной, чтобы проверить это ...)

% e.g.
userName = getenv ( 'USER' );  
userLocalArea = '~/Library/Preferences/';
filename = fullfile ( userLocalArea, userName );

В конце концов, я делаю это на языке Matlab, но это довольно общий вопрос ...

1 ответ1

2

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

Простой запуск ~/ направит его к себе домой, поэтому ~/Library/ перейдет к текущему пользователю
[Boot Drive]/Users/[User Name]/Library/ .

Если вам нужно установить для всех пользователей, используйте /Library/ .

Я думаю, что это эквивалент Windows ' %appdata%/

Если вам действительно нужно имя и папка ...

userName=$(logname)   
    or userName=$(user)
userLocalArea=$(home)

После тестов, кажется, есть некоторая несогласованность - они лучше работают в Терминале… поскольку некоторые вызовы не работают как в верхнем, так и в нижнем регистре, похоже, что верхний регистр - более безопасное «правило» Кто-то умнее меня должен будет указать, почему некоторые работают в скобках, а некоторые нет.

userName=$LOGNAME
    or userName=$USER
userLocalArea=$HOME

Это получит их короткое имя и домашнюю папку

Не уверен, как получить длинное имя без osascript ...

osascript -e "long user name of (system info)"

Все это предполагает, что ваша установка выполняется текущим зарегистрированным пользователем.

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