スクリプトで明らかに間違っている部分は、su - postgres
に続く行を予期していることです。 postgresユーザーとして実行されます。これは起こりません。
バッチモードでは、su - postgres
コマンドが入力されていないため、開始してすぐに終了します。次に、ユーザーがスクリプト(おそらくroot)を起動すると、スクリプトの次のコマンドが実行され、失敗します。
代わりに、次のように書く必要があります:
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
コメントの提案は、パッケージを介してpostgresqlをインストールしたことを前提としていますが、それは質問のコンテキストではありません。 ./configure
を使用してソースからインストールする場合 引数なしでmake install
、/usr/local/pgsql
の外部には何もインストールされません 。 /etc
の下に起動スクリプトがないのは完全に正常です。 この文脈で。