pipe理$ PATHvariables的最佳方法是什么?

我正在寻找一种更容易pipe理我的$PATHvariables的方法。

执行$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来pipe理我的$ PATH,但自然,它看起来像我需要留在我的shellconfiguration文件的一部分。

你可以在多行上列出你的pathspec,如下所示:

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

你也可以通过做你的path追加东西

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

所以你可以有

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

冒着听起来像一个古老的* NIXpipe理员的风险,请不要做怪异和时髦的事情,比如写一个ruby脚本来为你pipe理PATH – 你不会经常编辑它(如果你是你可能做错了事情),而且在这种情况下你会更好地遵守与其他人相同的标准,特别是当你需要寻求帮助的时候。

以冒号分隔的path列表在世界上发现的格式不正确的macros程序中并不那么可怕:-)

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

你可以按照以下方式做一些事情:

 PATH=$(ruby_prog $PATH) 

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

$ PATH需要看起来是这样的,尽pipe你可以使用反斜线(未经testing,没有* nix或Linux机器可用)跨线路分割它。

你为什么不写一个Ruby脚本来parsing它,并使其可读,并允许你编辑它? 这将是一个不错的小项目。

如果你的服务器有Perl,并且你不介意使用它,那么你可以尝试这个单行显示你的PATH(不pipe理它):

 printenv PATH | perl -nl -0x3A -e 'print ++$i, " ", $_;' 

我在我的技术博客上写了这个细节。

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

所有的32位编译成/ opt / 32,所有的64位都编译成/ opt / 64。

然后在两个文件夹中都有一个“set_env”脚本,它们设置相关的PATH和LD_LIBRARY_PATHvariables。 如果我们想运行32位的东西,我们input

 . /opt/32/set_env 

或64位:

 . /opt/64/set_env 

正如voretaq7所build议的那样,格式如下所示:

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

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

只是不要做我最初做的事情,并缩进行,因为那么它变成“/ opt / 32 …” – 注意空间,这是不是一个有效的文件系统path!