Quero executar um comando em um servidor remoto (Cent OS 7) e usar as variáveis de ambiente definidas nesse servidor. No entanto, quando eu executo este comando
ssh [email protected] "PGPASSWORD=$DB_PASS psql -U $DB_USER -d $DB_NAME -c 'COPY myapp_currencyprice to STDOUT WITH (DELIMITER \",\", FORMAT CSV, HEADER)' > /tmp/prices.csv"
parece que o comando está tentando usar "$DB_PASS" e outros env vars do localhost em vez de "remotehost.com". Qual é a maneira correta de fazer referência a env vars do servidor remoto?
Você precisa usar aspas simples para impedir que o shell local chegue à string:
Você então precisa trocar as aspas internas:
No entanto, isso ainda não funcionará porque você
.bash_profile
não será incluído, pois você não está usando um shell interativo. Neste ponto, a solução mais óbvia é incluí-lo explicitamente:Você pode procurar essas duas referências para entender a diferença entre os diferentes tipos de citações
(Comentário convertido em resposta, como proposto por terdon...)
Tente escapar dos sinais $ para evitar a expansão local. Curti
O que exatamente não funcionou, como mencionado em seu comentário? Você também colocou o comando entre aspas simples? Não, selecione também.