linux - Makefile:检查对目录的写入权限

标签 linux permissions makefile

有没有办法在 Makefile 规则中检查它是否具有写入指定目录的权限?这是我正在编写的 Makefile 的一小部分:

APP_NAME = electro
CC = gcc
C_FLAGS = -Wall
LIB_DIR = lib
SRC_DIR = src
INST_DIR = /usr/bin
INST_LIBDIR = /usr/lib
LIBS = libcomponent.so libpower.so libresistance.so
L_FLAGS = -lresistance -lpower -lcomponent

.PHONY: lib

lib:
    @$(MAKE) --directory=$(LIB_DIR)

install:    $(SRC_DIR)/main.c lib
    (cd $(LIB_DIR); cp $(LIBS) $(INST_LIBDIR))
    $(CC) $(C_FLAGS) -o $(INST_DIR)/$(APP_NAME) $(L_FLAGS) $< 
    @echo "$(APP_NAME) installed successfully."

如果用户没有写入/usr/lib 和/usr/bin 的权限,“安装”规则显然会失败。有没有办法在执行这两行之前检查此权限,并在这种情况下输出适当的错误消息(可能类似于“您没有足够的权限来运行此命令”)?

最佳答案

Shell 的/bin/test 或/bin/[ 会让你 /bin/test -d/path/to/foo -a -w/path/to/foo,即使 make 没有' 单独。

另一种使目录可访问的方法是在测试它是否可写之前尝试使用 mkdir -p 创建它。众所周知,我会执行以下操作:

mkdir -p ${TARGETDIR} && test -w ${TARGETDIR}

如果第一个命令失败,则不会尝试第二个。如果目录已经存在,mkdir -p 将成功。

关于linux - Makefile:检查对目录的写入权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9527102/

相关文章:

linux - 需要帮助将批处理文件转换为 linux shell 脚本

linux - 有没有人能够创建 PE COFF 和 ELF 的混合体?

makefile - Centos7如何安装lua5.3

linux - 挂载:未知文件系统类型 '0'

docker - Kubernetes仪表板不接受仅查看服务帐户 token

linux - 监视或记录目录权限更改?

iphone - 在iphone的facebook中显示权限页面

c++ - openGL 3 问题 : undefined reference to _glapi_tls_Dispatch

linux - 在一个 makefile 中编译 C++ 和 C 文件

linux - 检查 RPM 依赖项