O Postgres deseja criar um arquivo $HOME/.psql_history , onde ele armazenará todas as suas consultas e comandos do psql client. Pode muito bem querer fazer outra coisa em $HOME , mas não vejo nenhuma evidência na forma de outros arquivos ocultos. E não criará realmente o arquivo de histórico, a menos que você esteja usando psql interativamente, o que você não é.
Eu tive exatamente este mesmo problema e encontrei esta pergunta, mas a resposta aceita não foi aceitável para mim - eu não deveria ter permissão para postgres deixar um rastro de minhas consultas em qualquer diretório em que eu esteja quando eu executo um script!
@ Corey, a solução que você mencionou no seu comentário ( cd /tmp antes de chamar sudo... ) é provavelmente a melhor. psql não criará este arquivo em /tmp (tenho certeza de que isso é deliberado, pois pode permitir que usuários sem privilégios leiam o arquivo).
Existem outras duas soluções em que posso pensar:
-
Execute psql em um shell de login adicionando -i ao seu comando
sudo -i -u postgres psql < setup_dev_db.sql
Isso definirá o diretório $HOME to postgres HOME , listado em /etc/passwd . Para o Ubuntu, isso é /var/lib/postgres . Mas como você está enviando comandos, não criará um arquivo .psql_history . No entanto, se você usar o psql interativo, qualquer outra pessoa com privilégios sudo na máquina terá acesso ao seu histórico de comandos.
Não tenho certeza se há outras consequências negativas para a execução de um shell de login nessa situação.
-
Execute psql como um usuário com menos privilégios, por exemplo,
$ psql dev_db -hlocalhost corey_dev -W < setup_dev_db.sql
Se isso for um problema porque você deixa a criação do usuário postgres no seu script setup_dev_db.sql , e você ainda não tem nenhum usuário, apenas adicione um comando createuser no seu script primeiro, algo assim:
$ sudo -u postgres createuser corey_dev -P
e talvez ...
$ sudo -u postgres createdb dev_db "Dev database"
NOTA: Ao usar o psql cliente interativamente (que você não está aqui), se vir uma mensagem como could not change directory to "/home/corey/scripts": Permission denied message ****, psql vai escrever em /var/lib/postgres/.psql_history (ou onde quer que seja $HOME )! Se você já viu esse aviso ao usar o psql interativo, vá em frente - você provavelmente encontrará um arquivo de histórico oculto.