【发布时间】:2019-03-13 06:13:53
【问题描述】:
关于redis docker镜像ENTRYPOINT脚本docker-entrypoint.sh:
#!/bin/sh
set -e
# first arg is `-f` or `--some-option`
# or first arg is `something.conf`
if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then
set -- redis-server "$@"
fi
# allow the container to be started with `--user`
if [ "$1" = 'redis-server' -a "$(id -u)" = '0' ]; then
find . \! -user redis -exec chown redis '{}' +
exec gosu redis "$0" "$@"
fi
exec "$@"
在下面一行:
find . \! -user redis -exec chown redis '{}' +
\! 是什么意思?
【问题讨论】:
-
!表示not,因此该命令应该找到(然后是chown)不用户“redis”拥有的项目。但是一个普通的!对shell(命令行处理器)有特殊的含义,所以!必须以防止这种特殊处理的方式编写。在!之前放置一个反斜杠。这就是为什么它在该命令中写为\!。 -
非常感谢ottomeister。