解释在 Linux 中设置环境变量的语法。
例如这里:
export PATH=~/folder:${PATH}
为什么需要冒号后面的部分?她在干嘛?为什么不能直接写export PATH=~/folder
?
此命令是否与此有根本不同:
export PATH=$PATH:~/folder
?
为什么第一个变体在冒号之前指定路径,而在冒号后面有PATH的部分,反之亦然在第二个变体中?他们会以不同的方式工作吗?为什么在第一个选项中 PATH 周围有花括号,而在第二个选项中没有?有什么区别?
PATH变量指定目录列表及其系统外壳程序搜索可执行文件的顺序。
例如
echo $PATH
,为什么需要冒号后面的部分?
如果你这样写
export PATH=~/folder
,那么 PATH 变量将失去它以前的值,并且将只等于分配给它的值。因此,例如,ls -l
它只能通过绝对路径获得/bin/ls -l
。要存储当前 PATH 值,请在冒号后添加:
反之亦然,在冒号之前:
结果,一个目录将被添加到 PATH 变量
~/folder
中(在开头或结尾),同时保留以前的路径。如果~/folder
它在开头,则搜索将从该目录开始;如果在末尾,则相应地,可执行文件将在其中最后搜索(前提是在之前的任何目录中都没有找到它)。在这种情况下,大括号是无原则的,即 将导致相同的结果。因此,高级变量替换、各种计算和数值操作都需要它们。所有这些都在 Advanced Bash-Scripting Guide 中的示例中进行了详细说明。
它只是为变量赋值:
当然有可能。但在这种情况下,变量将获得完全不同的值。
基本上什么都没有。只是不同的值会进入变量。
这是一个完全不同领域的问题,与语法无关,而是与语义有关:毕竟,特殊环境变量 PATH的值对命令搜索过程有直接影响:如果命令未被识别为函数, alias 或 shell 内置命令,然后在目录中搜索它,在这个变量中通过冒号列出。目录从左到右排序,直到在下一个目录中找到一个可执行文件,该文件的名称与命令匹配,因此提及目录的顺序很重要:毕竟,同名文件(但不同内容)可以在不同的目录中找到。
指定变量值的方法 -
$имя
和${имя}
- 是绝对等价的。第二种方法可以认为是所谓的录制选项之一(最简单)。参数扩展:${имя:-слово}
等${имя%слово}
使用第二种方法消除歧义也很方便(有时是必要的)。例如,该条目
$имя_
将被视为名为 的变量的值имя_
,而该条目${имя}_
将被视为名为 的变量的值имя
,其(值)附加有字符_
。