Phần rõ ràng là sai trong tập lệnh của bạn là tập lệnh yêu cầu các dòng theo sau su - postgres
được chạy với tư cách là người dùng postgres. Điều này sẽ không xảy ra.
Ở chế độ hàng loạt, su - postgres
bắt đầu và ngay lập tức thoát vì không có lệnh nào được cung cấp cho nó. Sau đó, các lệnh tiếp theo của tập lệnh được thực thi khi người dùng khởi chạy tập lệnh (có lẽ là root) và chúng không thành công.
Thay vào đó, bạn nên viết một cái gì đó như sau:
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
Các đề xuất trong các nhận xét giả định rằng bạn đã cài đặt postgresql thông qua một gói, nhưng đó không phải là ngữ cảnh của câu hỏi. Khi bạn cài đặt từ nguồn với ./configure
không có đối số và make install
, nó sẽ không bao giờ cài đặt bất kỳ thứ gì bên ngoài /usr/local/pgsql
. Hoàn toàn bình thường khi không có tập lệnh khởi động nào dưới /etc
trong bối cảnh này.