Я нашел эту страницу на официальном сайте Postgresql, подробно :
Если вы хотите хранить конфигурационные файлы в другом месте, а не в каталоге данных. каталог, опция командной строки postgres -D или переменная среды PGDATA должны указывать на каталог, содержащий конфигурационные файлы, а параметр data_directory должен быть установлен в postgresql.conf (или в командной строке), чтобы показать, где на самом деле находится каталог данных. расположен. Обратите внимание, что data_directory переопределяет -D и PGDATA в отношении местоположения каталога данных, но не местоположения конфигурационных файлов.
При желании вы можете указать имена конфигурационных файлов и их местоположения по отдельности с помощью параметров config_file, hba_file и/или ident_file. config_file может быть указан только в командной строке postgres в командной строке, но остальные параметры можно задать в основном конфигурационном файла. Если все три параметра плюс data_directory заданы явно, то нет необходимости указывать -D или PGDATA.
При установке любого из этих параметров относительный путь будет интерпретироваться относительно каталога, в котором запущен postgres запущен.
Что выдает echo $PGDATA
на вашем хосте?
Это не отвечает на весь ваш вопрос, но обратите внимание, что bash не может выполнять какие-либо арифметические операции с плавающей запятой:
$ if [ 1234 -ge 1115.1 -a 1234 -le 1858.5 ]; then echo ok; else echo nope; fi
bash: [: 1115.1: integer expression expected
nope
Сравнения можно поручить bc:
check() {
local result=$(echo "0.9*$2 <= $1 && $1 <= 1.5*$2" | bc)
(( result == 1 )) && echo OK || echo NO
}
check 1234 1239 # => OK
check 1234 12390 # => NO