所有内容都在标题中。我知道如何在环境PATH
变量中添加新路径,但我想通过自动添加/bin
我所有未来项目的文件夹来使其递归。
类似于,替换这个:
PATH=$PATH:~/projects/project1/bin
PATH=$PATH:~/projects/project2/bin
..
PATH=$PATH:~/projects/projectN/bin
这样:
PATH=$PATH:~/projects/*/bin
问题:每次我把 放进*
去,系统都无法识别。您有办法解决吗?
我正在使用 Ubuntu 16.04
答案1
要完成这样的任务,您需要在大多数 shell 中将一些代码放入所谓的子命令中。在 Bash 中,其符号为$(...some command...)
。
方法
$ find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g'
此行代码将生成包含子目录的目录列表/bin
。它并非 100% 完美,因为它无法处理名称中包含空格的目录,但如果你知道你的情况符合此规则,那么你可以使用它。
使用上面的代码片段你可以构建$PATH
如下代码:
PATH=$PATH:$(find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g')
例子
在此示例中,我将使用 来$MYPATH
替代$PATH
。首先,我们已经在 中包含了一些目录$MYPATH
。
$ MYPATH=/path1/bin:/path2/bin
$ echo $MYPATH
/path1/bin:/path2/bin
现在将所有~/project*/bin
目录添加到$MYPATH
:
$ MYPATH=$MYPATH:$(find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g')
$ echo $MYPATH
/path1/bin:/path2/bin:/Users/slm/project1/bin:/Users/slm/project2/bin:/Users/slm/project3/bin