Bash:如何将子目录添加到PATH

时间:2011-09-23 13:19:17

标签: bash path

.bashrc我添加了一个dir,我放了一些脚本。这是可能的 - 自动添加其所有子目录 - 以便我不必手动逐个添加它们吗? (并且每次我在那里做一个导演时都不必访问.bashrc

修改

使用Laurent Legrand的解决方案,这就是我现在正在使用的方法:

PATH=$PATH:/usr/local/share/NAMD_2.7_Linux-x86_64:/usr/local/share/jmol-12.0.31:/usr/local/share/NAMD_2.7_Linux-x86_64_orig:/usr/local/share/sage-4.6.2:/opt/mongoDB/bin

PATH=$PATH:$(find ~/Study/geek/scripts -type d -printf "%p:")

这增加了dir及其子目录。

3 个答案:

答案 0 :(得分:3)

这样的事情应该有效

 PATH=$PATH:$(find your_dir -type d -printf "%p:")

答案 1 :(得分:2)

你的.bashrc中的

假设你的所有脚本都在〜/ bin

之下
maindir=~/bin
for subdir in `tree -dfi $maindir`
do
    PATH=$PATH:$subdir
done
export $PATH

可以做到这一点......

答案 2 :(得分:0)

这是将/opt目录中的可执行文件添加到路径的最佳做法:

for subdir in $(find /opt -maxdepth 1 -mindepth 1 -type d); do
  PATH="$subdir/bin:$PATH"
done
export $PATH

由于所有需要的可执行文件都应位于/opt/*/bin中,因此我们使用/opt/*避免使用超出-maxdepth 1的子目录,使用/opt避免使用-mindepth 1目录本身。 另请注意,我们在每个目录的末尾添加了/bin

同样适用于脚本的情况。如果您需要更多深度,只需修改-maxdepth的值或完全删除它以获得无限级别(如果包含主脚本路径,则同样适用于-mindepth)。 如果在多个子目录级别中找到相同的脚本名称,请注意歧义。

因此,在您的情况下,您可以使用:

for subdir in $(find $HOME/path/to/scripts -type d); do
  PATH="$subdir:$PATH"
done
export $PATH