我已将 LaTeX 添加到 PATH 变量,但当我将 shell 配置传输到多台计算机时,并非所有计算机上都安装了 LaTeX。除了无法访问软件的明显后果之外,当系统上不存在 PATH 变量所引用的软件时,配置 PATH 变量是否还会产生任何其他负面影响?
我的 .zshenv 文件:
# TeX Live
export PATH=$PATH:/usr/local/texlive/2023/bin/x86_64-linux
我已将 LaTeX 添加到 PATH 变量,但当我将 shell 配置传输到多台计算机时,并非所有计算机上都安装了 LaTeX。除了无法访问软件的明显后果之外,当系统上不存在 PATH 变量所引用的软件时,配置 PATH 变量是否还会产生任何其他负面影响?
我的 .zshenv 文件:
# TeX Live
export PATH=$PATH:/usr/local/texlive/2023/bin/x86_64-linux
这可能会产生一些潜在的负面影响,但实际上并不显着。
每当您尝试运行依赖于所添加目录中的软件但未安装的命令时,您可能会收到错误消息,指示找不到该命令或可执行文件。
如果添加的目录中的命令或可执行文件名称与系统上的现有命令冲突,则可能会导致意外行为。
当 shell 遇到命令时,它会在
PATH
变量列出的目录中搜索该命令。如果您引用的软件未安装,则 shell 必须在PATH
确定该命令不可用之前搜索所有目录。这个额外的搜索时间可能会导致命令执行略有延迟。您可以添加一条
if
语句来在执行导出之前检查软件是否存在。如果要将 shell 配置传输到多台计算机,您可以考虑为每台计算机创建单独的配置文件,并
PATH
根据每个系统上可用的软件相应地自定义变量。或者在 shell 配置中包含额外的检查,以验证是否存在所需的软件或目录。
没有任何。您的 shell 将花费大约 0.00005 秒尝试打开此位置,失败并继续。
如果此位置位于无法访问的远程文件系统上,则可能会出现唯一真正可能的问题。这可能会导致您每次尝试自动完成命令时出现一分钟的长时间延迟。
添加目录会
$PATH
增加运行程序过程的开销。shell 尝试优化这一点,但即使在 shell 之外,这种开销通常也是微不足道的,对于不存在的目录更是如此。多次添加相同的目录(正如您的示例有可能做到的那样)很丑陋,但通常对性能来说仍然微不足道。
将不受信任的目录添加到路径中会产生安全隐患,但我认为这些在这种情况下不适用,因为它是一个不存在的目录而不是不受信任的目录,并且潜在的父目录应该由 root 拥有。
最糟糕的结果可能是目录所在的磁盘恰好位于故障磁盘上(例如,NFS 挂载点指向无响应的服务器),但这不是一般情况。(结果会非常慢或者可能登录失败。)