我在Makefile中使用[/usr/bin/]install
将一些二进制文件复制到我的$HOME
目录中。我的umask设置为700。
问题是我使用install -D -m 700
来安装二进制文件,而父目录的创建权限为755而不是700:
$ umask
077
$ ls
$ touch hello
$ ls -l
total 0
-rw------- 1 emuso emuso 0 Apr 5 13:15 hello
$ install -D -m 700 hello $PWD/this/is/hello
$ ls -ld this
drwxr-xr-x 3 emuso emuso 4096 Apr 5 13:17 this
$ ls -lR this
this:
total 4
drwxr-xr-x 2 emuso emuso 4096 Apr 5 13:17 is
this/is:
total 0
-rwx------ 1 emuso emuso 0 Apr 5 13:17 hello
我希望目录this
和is
获得权限700而不是755。
我想到的解决方案是:
install -d -m 700
手动创建目录结构。chmod
手动修复权限。第一个解决方案的主要缺点是我有一个目录结构,我必须亲自去旅行和创建。
所以我的问题是:是否有一种优雅的方法来控制“install -D”创建的目录的权限?
答案 0 :(得分:0)
仅对install
进行一次调用似乎无法实现您想要实现的目标,因此您可能不得不求助于mkdir
和install
的组合。根据您的具体情况,您可以利用canned recipe,使用以下内容:
define einstall
test -d "$(dir $@)" || mkdir -p "$(dir $@)"
install -m 700 $< $@
endef
some/new/test/hello: hello
$(einstall)
如果您计划使用make v3.81或更早版本的罐装食谱,请务必阅读Why GNU Make canned recipe doesn't work?的答案