无法使用 sudo 创建目录

Cannot create directory with sudo

问题

为什么 sudo 无法创建目录并报错?

USER=ansible

AUTH_KEY_DIR="$(sudo -i -u ${USER} pwd)/.ssh"
AUTH_KEY_FILE="${AUTH_KEY_DIR}/.ssh/authorized_keys"

# ERROR >-bash: mkdir /home/ansible/.ssh: No such file or directory
sudo -i -u ${USER} "mkdir ${AUTH_KEY_DIR}"   # <----- Error is caused here. 
sudo -i -u ${USER} "touch ${AUTH_KEY_FILE}"

解决方案

sudo -i -u ${USER} /bin/bash -c "mkdir ${AUTH_KEY_DIR}"  

qouting 太多了。 sudo 命令不会重新标记命令:

sudo -i -u ${USER} mkdir "${AUTH_KEY_DIR}"

不能用同样的方法创建目录运行ning:

"mkdir ${AUTH_KEY_DIR}"

将尝试找到名为 mkdir ${AUTH_KEY_DIR} 和 运行 的可执行文件。你想 运行 mkdir 带有参数 ${AUTH_KEY_DIR}.