Esto podría funcionar para usted: function vared { tmpfile=$( mktemp -t vared.XXXX ) ; echo "${!1}" > "$tmpfile" ; vim "$tmpfile" && export $1=$( cat "$tmpfile" ) ; rm "$tmpfile" ; }. Llame como vared PATH, por ejemplo , edite el valor vimy guárdelo para cambiar la variable de entorno. ( mktempfunciona de manera diferente según el sistema operativo, esta llamada parece funcionar principalmente según lo previsto en RHEL y OS X).
Daniel Beck
Gracias, es lo suficientemente bueno para mí, aunque no es genial como zsh;) Si desea proporcionarlo como respuesta, lo aceptaré.
Carlo
Respuestas:
6
No estoy al tanto de todo lo que funciona como zsh's vareden bash, fuera de la caja.
Sin embargo, puede definir una función que le permita editar el valor de una variable de entorno utilizando, por ejemplo vim:
¿Qué hace? Crea un archivo temporal, escribe el valor actual de la variable especificada en el archivo y se abre vimcon el archivo temporal como argumento. Ahora se espera que edite el valor, lo guarde y salga vim(puede salir sin guardar el archivo para omitir los cambios guardados). Luego, el contenido del archivo se establece como el nuevo valor de la variable, todo se exporta y se elimina el archivo temporal. commandes necesario omitir el alias de shell y las búsquedas de funciones, por ejemplo, un rmalias rm -ique preguntar antes de eliminar el archivo al final de lo contrario.
Si la variable no existe o no es una variable de entorno , lo será después.
+1. Yo usaría en $VISUALlugar de codificar vim, y puedes usar en $(< "$tmpfile")lugar de cat - $(<es un bash incorporado
glenn jackman
@glennjackman Gracias por las sugerencias. Eliminé el UUOC. En cuanto a VISUAL: No está configurado de manera predeterminada (al menos en OS X), y verificar si existe y agregar un respaldo (que de todos modos necesitaría ser personalizado) aumentaría innecesariamente la complejidad aquí.
Daniel Beck
2
en bash 4.x puedes hacer exactamente lo mismo de esta manera
# bash
read -e -p 'edit your path: '-i "$PATH" PATH
# zsh
vared -p 'edit your path: ' PATH
function vared { tmpfile=$( mktemp -t vared.XXXX ) ; echo "${!1}" > "$tmpfile" ; vim "$tmpfile" && export $1=$( cat "$tmpfile" ) ; rm "$tmpfile" ; }
. Llame comovared PATH
, por ejemplo , edite el valorvim
y guárdelo para cambiar la variable de entorno. (mktemp
funciona de manera diferente según el sistema operativo, esta llamada parece funcionar principalmente según lo previsto en RHEL y OS X).Respuestas:
No estoy al tanto de todo lo que funciona como
zsh
'svared
enbash
, fuera de la caja.Sin embargo, puede definir una función que le permita editar el valor de una variable de entorno utilizando, por ejemplo
vim
:Llámalo como
vared PATH
.¿Qué hace? Crea un archivo temporal, escribe el valor actual de la variable especificada en el archivo y se abre
vim
con el archivo temporal como argumento. Ahora se espera que edite el valor, lo guarde y salgavim
(puede salir sin guardar el archivo para omitir los cambios guardados). Luego, el contenido del archivo se establece como el nuevo valor de la variable, todo se exporta y se elimina el archivo temporal.command
es necesario omitir el alias de shell y las búsquedas de funciones, por ejemplo, unrm
aliasrm -i
que preguntar antes de eliminar el archivo al final de lo contrario.Si la variable no existe o no es una variable de entorno , lo será después.
fuente
$VISUAL
lugar de codificar vim, y puedes usar en$(< "$tmpfile")
lugar de cat -$(<
es un bash incorporadoVISUAL
: No está configurado de manera predeterminada (al menos en OS X), y verificar si existe y agregar un respaldo (que de todos modos necesitaría ser personalizado) aumentaría innecesariamente la complejidad aquí.en bash 4.x puedes hacer exactamente lo mismo de esta manera
fuente https://stackoverflow.com/questions/2642585/read-a-variable-in-bash-with-a-default-value
docs https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html
fuente
Esto se basa en la respuesta de thecotne , escrita para GNU Bash 4.3:
Tenga en cuenta que esto tiene algunas diferencias sutiles con respecto al Zsh incorporado, por ejemplo:
vared $
. Ej. )fuente