我正在编写系统设置脚本,并且已经安装了postgres.这是一个测试脚本(以root身份运行),用于尝试报告postgres中的工作目录.将pwd称为postgres会得到/ var / lib / postgresql.但是测试
#!/bin/bash
su - postgres
pwd > /home/me/postgres_report
exit
..失败(显然),并报告原始工作目录.之后,bash shell被卡在了postgres中,这表明命令的调用顺序不正确.我了解这里的环境问题.我不知道如何做我需要做的事情,这是自动化一个我可以轻松进行交互的postgres流程(即进入postgres,执行命令并退出).有指针吗?
解决方法:
使用sudo.
使用以下之一:
>将一行命令传递给psql
sudo -u postgres psql -c "SELECT ..."`
>此处文档:
sudo -u postgres psql <<"__END__"
SELECT ...;
SELECT ...;
__END__
(如果您希望能够替换shell变量,则不要使用“,例如<< __ END__,而反斜杠转义$符号则不希望成为变量))
>将文件传递给psql
sudo -u postgres psql -f /path/to/file
仅当您需要成为postgres系统用户以通过对等身份验证以postgres数据库用户身份运行任务时,才需要sudo -u postgres.否则,您可以使用psql -U用户名,.pgpass文件等.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。