我正在尝试编写一个csh脚本,当存在时,它将在子目录中执行makefile。到目前为止我有这个:
find -maxdepth 2 -name 'Makefile' -print -execdir make \;
我面临的问题是,当我尝试运行它时,会出现以下错误:
find: The current directory is included in the PATH environment variable, which is insecure in combination with the -execdir action of find. Please remove the current directory from your $PATH (that is, remove "." or leading or trailing colons)
在这种情况下,我无法合理地更改$path变量。任何关于解决办法的想法。
非常感谢和愉快的编码

最佳答案

-execdir标志是gnu find的一个特性,它的实现方式是抛出该错误并拒绝在检测到它描述的情况时继续。find中没有避免该错误的选项。因此,您可以修复PATH(您可以仅针对find命令本身:

 PATH=<fixed-path> find -maxdepth 2 -name 'Makefile' -print -execdir make \;

)否则不要使用basile所描述的-execdir
呃…实际上这是posix sh语法。csh支持吗?我已经很久没用过csh了,我记不起来了,老实说,这是一个很糟糕的外壳,我懒得去看了-p:-)

07-24 09:38
查看更多