Похоже, вы верите, что переменные окружения являются глобальными.То есть изменение значения в одной программе, такой как работающий терминал, повлияет на значение в другой программе.Это не то, как env vars работает в UNIX-подобных ОС.Каждому процессу предоставляется копия переменных env, предоставленных родительским процессом.То есть они наследуются от родительского процесса.
Тот факт, что вам нужно unset X
в терминале, чтобы удалить его, означает, что либо он наследуется оболочкой из процесса терминала, либо ваша оболочкаустанавливая это.В последнем случае конкретные файлы, читаемые при запуске оболочки, зависят от оболочки.Но / etc / profile читается большинством интерактивных оболочек, так что вы можете захотеть посмотреть туда.
Вы говорите, что ваше Java-приложение запущено Tomcat, но не упомянуло, как запускается Tomcat.Это важно по причинам, которые я упомянул выше.
Обратите внимание, что macOS использует демон с именем launchd
для управления большинством сервисов.Эти сервисы настраиваются через файлы "plist".Смотри man launchd.plist
.Эти файлы конфигурации launchd поддерживают определение пользовательских переменных env.Это немного необычно, но стоит посмотреть.Посмотрите, есть ли в файлах ~ / Library / LaunchAgents , / Library / LaunchAgents или / Library / LaunchDaemons упоминание env var.