Mac:两种$Path的写法

  1. 两个写法的对比
    1. 写法 2:
  • 哪个写法更好?
  • 两个写法的对比

    写法 1:

    export PATH=${PATH}:~/fvm/default/bin/cache/dart-sdk/bin
    

    写法 2:

    export PATH=~/fvm/default/bin/cache/dart-sdk/bin:$PATH
    

    主要差别:

    • 路径添加的顺序

      • 写法 1:将 ~/fvm/default/bin/cache/dart-sdk/bin 追加到现有的 $PATH 末尾。
      • 写法 2:将 ~/fvm/default/bin/cache/dart-sdk/bin 前置到现有的 $PATH 开头。

      这意味着在命令查找时,写法 2 会优先搜索 ~/fvm/default/bin/cache/dart-sdk/bin 目录中的命令,而写法 1 会先搜索 $PATH 中已有的其他目录。

    • 语法风格

      • 写法 1 使用 ${PATH},这是 Bash 中引用变量的显式写法,明确表示变量 PATH 的值。
      • 写法 2 使用 $PATH,这是更简洁的写法,效果与 ${PATH} 相同(在这种情况下没有实际区别)。

    实际效果:

    • 写法 1PATH=$PATH:/new/path

      • 新路径被追加到 PATH 末尾。
      • 如果系统中已经有一个同名命令(例如 dart)存在于 $PATH 中的其他目录,新路径中的 dart 命令可能不会被优先调用,因为 Shell 会按 PATH 中路径的顺序查找命令。
    • 写法 2PATH=/new/path:$PATH

      • 新路径被添加到 PATH 开头。
      • 新路径中的命令会优先于 $PATH 中其他目录中的同名命令被调用,因为 Shell 会先查找新路径。

    哪个写法更好?

    • 写法 2(前置)更常用

      • 在安装新的开发工具(如 Dart SDK)时,通常希望新安装的版本优先于系统中可能存在的旧版本。
      • 将新路径前置到 $PATH 开头(写法 2)可以确保新安装的 Dart SDK 命令优先被使用。
      • 例如,如果系统中已经有一个旧版本的 dart 命令(位于 /usr/bin),写法 2 会确保 ~/fvm/default/bin/cache/dart-sdk/bin/dart 被优先调用。
    • 写法 1(追加)可能导致问题

      • 如果系统中已经存在一个同名命令(例如旧版本的 dart),追加到末尾的写法会导致旧版本的命令被优先调用,可能引发版本冲突或意外行为。

    ×

    喜欢就点赞,疼爱就打赏