我遇到了一点问题,希望有人能帮助我。
我正在编写一个 bash 脚本来设置一些软件,例如 nginx、postgres 等
到目前为止一切都很顺利,除了设置 PostgreSQL
我需要运行以下命令;
psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
但我需要通过 sudo 来完成。
我的完整命令如下;
sudo su - postgres psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
当我运行这个时,我得到以下内容;
psql: CREATE: command not found
但如果我执行以下操作,它就可以正常工作
sudo su - postgres
psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
我的 sudo 命令中是否缺少标志或其他东西?... 任何帮助都将不胜感激。
答案1
如果用户是root,你可以使用-C选择苏
su - postgres -c "<commands>"
或者使用须藤和-C
sudo -U postgres -c "<commands>" -s /bin/bash