我正在尝试在 Ubuntu docker 容器中运行一个 bash 文件,我正在尝试修改 Postgresql 的两个文件,postgresql.conf 和 pg_hba.conf,这是我正在尝试运行的 bash 文件:
sed -i -e"s/^#listen_addresses.*$/listen_addresses = '*'/"
/var/lib/postgresql/data/postgresql.conf
echo "host all all 0.0.0.0/0 md5" >>
/var/lib/postgresql/data/pg_hba.conf
/etc/init.d/postgresql restart
这是我尝试运行它的方式:
root@fe4fcebedad6: ./db.sh
db.sh 是 bash 文件的名称,文件 postgresql.conf 位于我正在使用的路径/var/lib/postgresql/data/但我收到此消息:
: No such file or directorystgresql/data/postgresql.conf
奇怪的是,如果在 bash 文件之外运行每一个命令,它就可以正常工作,如下所示:
root@fe4fcebedad6:/# sed -i -e"s/^#listen_addresses.*$/listen_addresses = '*'/" /var/lib/postgresql/data/postgresql.conf
这是 docker-compose 文件中我将本地 bash 文件复制到 postgrest 镜像中的部分
volumes:
- pgdata:/var/lib/postgresql/data
- ./shell_scripts:/shell_scripts
volumes:
pgdata:
最佳答案
这是一个问题,因为您的命令中有多行。应该像下面这样
sed -i -e"s/^#listen_addresses.*$/listen_addresses = '*'/" /var/lib/postgresql/data/postgresql.conf
echo "host all all 0.0.0.0/0 md5" >> /var/lib/postgresql/data/pg_hba.conf
/etc/init.d/postgresql restart
关于linux - 在 docker 容器内运行的 bash 文件中没有这样的文件或目录 sed 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45451267/