我正在尝试构建一个设置脚本来自动创建开发环境,但是我在尝试管道或使用psc的-c修饰符时遇到了麻烦。
我试过了:
sudo su postgres psql -c "ALTER ROLE postgres WITH password 'pass'"
和
sudo su postgres psql -c "ALTER ROLE postgres WITH password 'pass';"
两者都说" ALTER:命令未找到"
我也尝试过管道,但是我无法正确地将它与su结合使用
例如:我尝试了像
这样的东西sudo su postgres echo "ALTER ROLE postgres WITH password 'pass'" | psql
但是postgres无法执行" echo"
和
echo "ALTER ROLE postgres WITH password 'pass'" | sudo su psql
哪个不起作用。
所以,我的第一个问题是:如何从sh文件中执行这个简单的命令?
第二个,相关性较小:如何在与管道链接的命令中使用不同的用户?
答案 0 :(得分:8)
-c
缺少--command
或su
表示该行的其余部分是命令,这是错误的。
但无论如何都不需要su
,因为已经有sudo
。这样做:
sudo -u postgres psql -c "ALTER ROLE postgres WITH password 'pass'"
答案 1 :(得分:0)
如果您像我一样,请确保您不在以下位置运行
: bash-4.2$
但是:
postgres=#