Den del, der tydeligvis er forkert i dit script, er, at det forventer linjerne efter su - postgres
skal køres som postgres-bruger. Dette vil ikke ske.
I batch-tilstand, su - postgres
starter og afsluttes med det samme, fordi der ikke sendes nogen kommando til den. Derefter udføres de næste kommandoer i scriptet, mens brugeren starter scriptet (formodentlig root), og de mislykkes.
I stedet skal du skrive noget som dette:
su - postgres <<-'EOF'
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
/usr/local/pgsql/bin/createdb test
EOF
# the lines after the EOF will be executed again as the initial user
Forslagene i kommentarerne forudsætter, at du har installeret postgresql via en pakke, men det er ikke konteksten for spørgsmålet. Når du installerer fra kilde med ./configure
uden argumenter og make install
, vil den aldrig installere noget uden for /usr/local/pgsql
. Det er helt normalt at have noget opstartsscript under /etc
i denne sammenhæng.