管理 $PATH 变量的最佳方法?

管理 $PATH 变量的最佳方法?

我正在寻找一种更容易管理$PATH变量的方法。

执行$PATH返回:

/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin: No such file or directory

对我来说,这完全是废话,很难读。

它们能像这样列出吗:

/usr/local/bin:
/usr/local/sbin:
/usr/local/mysql/bin:
/opt/local/bin:
/opt/local/sbin:
/usr/bin:/bin:
/usr/sbin:
/sbin:
/usr/local/bin:
/usr/X11/bin: No such file or directory

我很想使用 Ruby 来管理我的 $PATH,但自然而然地看起来我需要将其保留为我的 shell 配置文件的一部分。

答案1

您可以在多行中列出您的路径规范,如下所示:

PATH=\
/a:\
/b:\
/c:\
/d

您还可以通过执行以下操作将内容附加到您的路径中

PATH=${PATH}:/new:/stuff

所以你可以

PATH=/a
PATH=${PATH}:/b
(etc)

冒着听起来像一个脾气暴躁的老 *NIX 管理员的风险,请不要做一些奇怪和古怪的事情,例如编写一个 ruby​​ 脚本来为您管理 PATH - 您不会经常编辑它(如果您这样做,您可能做错了什么),并且在这种情况下,遵守与其他人相同的标准会对您更有好处,特别是当您需要向某人寻求帮助时。

与世界上所有格式糟糕的事物相比,冒号分隔的路径列表并不是那么糟糕:-)

答案2

echo $PATH | sed 's/:/:\n'

您可以采取类似以下措施:

PATH=$(ruby_prog $PATH)

在启动脚本(或其他源脚本)中或在 shell 提示符下。

答案3

$PATH 需要看起来像它那样,尽管您可能可以使用反斜杠将其拆分到多行(未经测试,没有可用的 *nix 或 Linux 机器)。

为什么不写一个 Ruby 脚本来帮你解析它,让它可读,并允许你编辑它呢?那将是一个不错的小项目。

答案4

在大多数服务器上,我们同时拥有 64 位和 32 位应用程序环境。

所有 32 位内容都编译到 /opt/32 中,所有 64 位内容都编译到 /opt/64 中。

然后我们在两个文件夹中都有一个“set_env”脚本,用于设置相关的 PATH 和 LD_LIBRARY_PATH 变量。如果我们想运行 32 位程序,我们输入

. /opt/32/set_env

或 64 位:

. /opt/64/set_env

格式正如 voretaq7 所建议的,如下所示:

export PATH="\
/opt/32/app1/bin:\
/opt/32/app2/bin:\
/opt/32/app3/bin"

(在 64 位脚本中将 32 替换为 64。)

只是不要按照我原来的做法缩进行,因为这样它会变成“/opt/32...”——注意空格,这不是一个有效的文件系统路径!

相关内容