你怎么做呢?我的code/
工作目录是在文件夹,子文件夹和子文件夹中组织的,所有这些(至少在理论上)都包含我想要定期运行的脚本或程序.
在脚本的最后,添加以下行:
PATH=${PATH}:$(find ~/code -type d | tr '\n' ':' | sed 's/:$//')
这会将〜/ code树中的每个目录追加到当前路径.我自己不喜欢这个想法,更喜欢只有几个目录持有我自己的可执行文件并明确地列出它们,但是每个目录都是自己的.
如果要排除所有隐藏的目录,基本上需要删除每个具有序列的行"/."
(以确保不检查隐藏目录下的子目录):
PATH=${PATH}:$(find ~/code -type d | sed '/\/\\./d' | tr '\n' ':' | sed 's/:$//')
这将阻止您获取诸如此类的目录~/code/level1/.hidden/level3/
(即,一旦检测到它们被隐藏,它就会停止在子树中搜索).如果您只想保留隐藏目录,但仍允许其下的非隐藏目录,请使用:
PATH=${PATH}:$(find ~/code -type d -name '[^\.]*' | tr '\n' ':' | sed 's/:$//')
这将允许~/code/level1/.hidden2/level3/
但不允许,~/code/level1/.hidden2/.hidden3/
因为-name
只检查文件的基本名称,而不是完整的路径名.
以下是正确的事情,包括修剪隐藏目录及其子代,并使用换行符或其他空格正确处理名称:
export PATH="${PATH}$(find ~/code -name '.*' -prune -o -type d -printf ':%p')"
我使用类似的技巧来自动设置CLASSPATH
s.