Di seguito utilizza bash di printf %q
per sfuggire valori correttamente indipendentemente dal loro contenuto. È garantito gestire letteralmente qualsiasi valore possibile - virgolette, newline, ecc. A patto che la shell che si basa sull'output sia bash, e fintanto che il sistema operativo in uso supporta la funzione /proc/self/environ
fornita da Linux per emettere il contenuto di l'ambiente come un flusso delimitato da NUL. Utilizza forme di citazione speciali come $'\n'
come e dove appropriato, quindi il suo output non può essere onorato dagli interpreti POSIX puri.
#!/usr/bin/env bash
while IFS= read -r -d '' kvname; do
k=${kvname%%=*}
v=${kvname#*=}
printf '%q=%q\n' "$k" "$v"
done </proc/self/environ
noti che si vorrà fonte l'uscita, viene eseguito come un eseguibile esterno, se si desidera che l'ambiente shell corrente per cambiare. Se non si desidera effettuare lo set -a
prima del sourcing, aggiungere uno export
iniziale alla stringa di formato.
fonte
2014-11-26 00:58:44
esecuzione lo script non fa molto, anche se, dato come non appena è fatto in esecuzione esce, e l'ambiente del suo genitore non cambia un po '. 'source my_env' ha più senso, ma questo non richiede' chmod + x'. –
buon punto rimuovendo il + x come rumore –