我一直在思考在 Ubuntu、macOS 等操作系统中管理环境变量的有效方法。我有几个与此相关的问题。
是否有一个常识,即系统上安装的每个可执行软件在调用方面都应该在整个系统范围内可用?或者可执行文件应该默认仅由 shell 调用?
我到处都看到导出 shell 变量来扩展 PATH 变量的方法。但它只适用于一个 shell。因为每个 shell 都有自己的初始化文件。我们需要在每个 shell 文件中写入相同的语句。例如,如果我使用 zsh,我应该这样做:
echo ‘export PATH="/path/to/bin:$PATH"’ >> ~/.zshrc
- 那些不在系统范围路径中的程序,不能被另一个程序直接调用。我猜这是默认可执行文件和其他可执行文件之间的一种隔离,以使系统路径干净。那么我们不应该操作系统范围的 PATH 吗?
我可能有点搞混了,抱歉。但如果你能帮我解释清楚的话我会非常感激。
答案1
环境和其他资源管理通常由两个不同的角色完成。系统管理员通常会设置一套软件的系统,并确保为所有用户完成该软件的配置。这可能包括环境变量、资源等。
用户是另一个角色,他们是系统的客人,他们的配置就像装饰你的房间。安装你想要的软件,添加或删除 PATH 条目,添加系统上没有的软件。一般来说,如果你想要系统范围内的东西,那么 /etc 就是建立设置的地方。对于用户特定的定制,你可以在你的用户帐户中使用相应的配置,如 .profile 或 Bash 的 .bashrc。每个软件都有自己独特的配置结构。
您的管理员角色管理所有用户的配置文件,用户可以自定义这些配置文件。在大多数情况下,您和开发人员是同一个人。
其实没有什么神奇的公式,做对你有用的事情。