Část, která je ve vašem skriptu zjevně chybná, spočívá v tom, že očekává řádky následující za su - postgres
být spuštěn jako uživatel postgres. To se nestane.
V dávkovém režimu su - postgres
se spustí a okamžitě skončí, protože do něj není zadán žádný příkaz. Poté jsou provedeny další příkazy skriptů, když uživatel spouští skript (pravděpodobně root) a selžou.
Místo toho byste měli napsat něco takového:
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
Návrhy v komentářích předpokládají, že jste postgresql nainstalovali prostřednictvím balíčku, ale to není kontext otázky. Při instalaci ze zdroje pomocí ./configure
bez argumentů a make install
, nikdy nenainstaluje nic mimo /usr/local/pgsql
. Je naprosto normální nemít spouštěcí skript pod /etc
v tomto kontextu.