我正在寻找一种更容易管理$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...”——注意空格,这不是一个有效的文件系统路径!