长 $PATH 可以拆分成多行吗?

Can long $PATH be split across many lines?

现在,我的路径声明如下所示: 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

等等。

但是有没有办法在单个导出命令中完成它?

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

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

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

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

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

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

 export PATH

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