我在我的bash_profile和我的配置文件中添加了一些可导出的环境变量,格式如下,导出“X = y”。这应该工作,现在我想永久删除它们。我尝试了以下方法:
但是,每当我调用Java的System.getenv(X)时,仍会返回env变量X的值(y)。还有什么办法可以在MacOS Mojave中完全消除我的系统中的env变量?
看来你认为环境变量是全球性的。也就是说,修改一个程序(例如正在运行的终端)中的值将影响不同程序中的值。这不是env vars在像OS这样的UNIX中的工作方式。每个进程都提供了父进程提供的env变量的副本。也就是说,它们是从父进程继承的。
事实上你必须在终端中使用unset X
来删除它意味着要么是shell从终端进程继承它,要么你的shell正在设置它。在后一种情况下,shell启动时读取的特定文件取决于shell。但是大多数交互式shell都会读取/ etc / profile,因此您可能希望在那里查看。
您说您的Java应用程序是由Tomcat运行的,但未提及Tomcat是如何启动的。这对我上面提到的原因很重要。
请注意,macOS使用名为launchd
的守护程序来管理运行大多数服务。这些服务是通过“plist”文件配置的。见man launchd.plist
。那些launchd配置文件支持定义自定义env变量。这有点不寻常但值得一看。查看〜/ Library / LaunchAgents,/ Library / LaunchAgents或/ Library / LaunchDaemons中的任何文件是否提及env var。