Mac为什么环境配置比Windows复杂?以nvm为例

166 阅读3分钟

先分析Windows和Mac的系统差异。

  1. Shell 环境:macOS 默认使用 Bash 或 Zsh 作为命令行 Shell,而 Windows 使用命令提示符(Command Prompt)或 PowerShell。这导致了在配置环境变量和执行脚本方面的差异。
  2. 配置文件:在 macOS 中,环境变量通常在 .bash_profile、.bashrc、.zshrc 等配置文件中设置,具体取决于你使用的 Shell。而在 Windows 中,环境变量通常通过系统设置中的 "环境变量" 对话框来配置。
  3. 包管理器:macOS 没有内置的包管理器,因此用户通常需要安装第三方工具,如 Homebrew,以便更轻松地安装和管理软件包。相比之下,Windows 有内置的安装程序和 MSI 软件包,使安装过程更加简单。
  4. 文件系统结构:macOS 基于 Unix,具有不同的文件系统层次结构和文件权限模型。这可能需要一些时间来适应,特别是对于习惯了 Windows 文件系统的用户。

尽管 macOS 的配置过程可能稍微复杂一些,但它提供了更大的灵活性和对开发环境的控制力。

以nvm(node的包管理器)的安装和使用为例阐述前三个不同点。

包管理器差异:首先在安装层面,对于Windows只需要一个简单的命令,而对于mac需要先下载包管理器(常用homebrew);

shell环境差异:在使用的时候,Windows开箱即用,而对于mac,需要在 .bash_profile 文件中添加必要的配置,以确保每次打开终端时都能加载 nvm:

在.bash_profile文件中添加如下代码

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

原因如下:

  • 在类 Unix 系统中,Shell 配置通常存储在用户主目录下的隐藏文件中,如 .bash_profile.bashrc 或 .zshrc。这些文件包含 Shell 启动时执行的命令和配置。
  • 在 Windows 中,没有类似的默认配置文件。命令提示符和 PowerShell 有自己的配置机制,通常不涉及类似 .bash_profile 的文件。

配置文件差异以:

环境变量为例:

  • 定义:环境变量由一个唯一的名称和一个与之关联的值组成。例如,PATH 是一个常见的环境变量,它存储了一个目录列表,操作系统在这些目录中查找可执行文件。
  • 作用域:环境变量可以有不同的作用域,例如系统级别、用户级别或会话级别。系统级别的环境变量对所有用户可见,而用户级别的环境变量仅对特定用户可见。
  • 继承:当你启动一个新的进程或打开一个新的终端窗口时,它会继承父进程的环境变量。这允许你在不同的进程或会话之间共享配置。
  • 修改:你可以通过命令行或系统设置来修改环境变量。在类 Unix 系统(如 macOS 和 Linux)中,你通常在 Shell 配置文件(如 .bash_profile 或 .bashrc)中设置环境变量。在 Windows 中,你可以通过 “系统属性” 中的 “环境变量” 对话框来修改环境变量。
  • 使用:应用程序和脚本可以读取环境变量,以便在运行时配置其行为。例如,NODE_ENV 环境变量通常用于指定 Node.js 应用程序是在开发模式还是生产模式下运行。