两个写法的对比
写法 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:将
语法风格:
- 写法 1 使用
${PATH},这是 Bash 中引用变量的显式写法,明确表示变量PATH的值。 - 写法 2 使用
$PATH,这是更简洁的写法,效果与${PATH}相同(在这种情况下没有实际区别)。
- 写法 1 使用
实际效果:
写法 1:
PATH=$PATH:/new/path- 新路径被追加到
PATH末尾。 - 如果系统中已经有一个同名命令(例如
dart)存在于$PATH中的其他目录,新路径中的dart命令可能不会被优先调用,因为 Shell 会按PATH中路径的顺序查找命令。
- 新路径被追加到
写法 2:
PATH=/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),追加到末尾的写法会导致旧版本的命令被优先调用,可能引发版本冲突或意外行为。
- 如果系统中已经存在一个同名命令(例如旧版本的