【问题标题】:Can long $PATH be split across many lines?可以将长 $PATH 拆分为多行吗?
【发布时间】:2021-12-03 08:53:58
【问题描述】:

现在,我的路径声明如下所示: export PATH=/a/b/c:/d/e/f:/g/h/i:/j/k/l 等等,长度超过 1,000 个字符,目前在一个很长的行中。为了便于维护,我想做的是在多行中声明它,例如: 注意:尖括号 中的文本不是实际语法。

export PATH=<some way of indicating that we continue on the next line>
/a/b/c:<newline>
/d/e/f:<newline>
/g/h/i:<newline>
/j/k/l:<newline>

等等。

当我提出这个问题时,我想到我可以通过编码实现类似的目标:

export PATH=/a/b/c
export PATH=$PATH:/d/e/f
export PATH=$PATH:/g/h/i
export PATH=$PATH:/j/k/l

等等。

但是有没有办法在单个导出命令中做到这一点?

【问题讨论】:

  • 您可以将 any shell 命令行拆分为多条物理行,其中反斜杠后跟(立即)换行符。
  • 您的路径上有多少个目录,您是否需要那么多目录?看来您可以将二进制文件合并到更少的目录下,或者根据需要利用各种虚拟环境来更新您的路径。

标签: macos environment-variables zsh


【解决方案1】:

可以使用反斜杠,然后立即换行,表示行继续,但我不会这样做。这只会招致错误的蔓延,乍一看不容易发现。

我会使用数组path而不是字符串PATH来代替这个,然后写

path=(
  /a/b/c
  /d/e/f
  /g/h
)

注意PATHpath 是同步的:如果你改变一个,另一个也随之改变。

更新:虽然path=(....) 等同于您的原始请求,但更实际的用法可能是path+=(.....),因为您通常不希望破坏现有路径。

至于export 方面,PATH 通常已经被导出,所以你不会明确地这样做。如果您确实想这样做 - 无论出于何种原因 - 您只需添加一个

 export PATH

之后,因为您无法导出数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    相关资源
    最近更新 更多