entonceslftputiliza algunas variables de shell extrañas, como las siguientes:
xfer:log-file = 1
sftp:connect-program = “ssh -a -x -i keyfile”
¿Cómo configuraría estas variables? Intenté usar set
, y env
; y también directamente xfer:log-file=1
, pero ninguno de ellos parece funcionar.
Cualquier ayuda sería apreciada :)
Respuesta1
Esas no son variables de shell, son lftp
variables de configuración, variables configuradas lftp
en el lftp
indicador CLI o en lftp
archivos de configuración, no tienen nada que ver con ningunacaparazón(a menos que quiera considerarse lftp
un shell, ya que de alguna manera es un intérprete de un lenguaje similar a un shell e incluso puede ejecutar comandos con su !
operador (aunque depende de un shell real para eso)).
Si desea que las variables del shell se definan con el mismo nombre (pero ¿por qué lo haría?), tenga en cuenta que la mayoría de los shells tienen muchas restricciones sobre los caracteres que puede contener el nombre de sus variables.
Para la mayoría de los shells, los nombres de las variables comienzan con una letra o un guión bajo (pueden ser letras ASCII o caracteres alfabéticos según lo definido por su configuración regional en algunos shells) y constan solo de letras, dígitos decimales y un guión bajo.
A algunos shells les gusta rc
o es
permiten cualquier carácter (excepto =
(para rc
) y NUL) en el nombre de la variable:
; a:b = c
; echo $'a:b'
c
bash
y yash
algunas versiones de zsh
permiten caracteres clasificados como alfabéticos en su configuración regional, por lo que posiblemente podría engañar a esos shells para que acepten :
como un carácter de nombre de variable válido construyendo una configuración regional personalizada donde :
se clasifique como alfabético, pero eso sería una idea bastante mala y es seguro que rompe cosas (por ejemplo, ${var:something}
ya tiene un significado especial en bash
y zsh
).
AhoraambienteLos nombres de variables pueden contener cualquier carácter excepto NUL y =
. Entonces puedes pasar una variable de entorno a un comando que contenga :
o -
:
$ env foo:bar=baz printenv foo:bar
baz
pero tenga en cuenta que los shells (excepto rc
/ es
) no podrán usarlos y algunos shells pueden incluso eliminarlos del entorno (y eso no afectará lftp
cuál no asigna variables de entorno a sus variables de configuración AFAIK).
Para configurar esas lftp
variables al inicio, puede hacer:
lftp -e 'set xfer:log-file transfer.log' sftp://server/
O incrustarlo en un script lftp para uso no interactivo:
lftp -c '
set xfer:log-file transfer.log
get https://unix.stackexchange.com/questions/240502'
O
#! /usr/bin/lftp -f
set xfer:log-file transfer.log
get https://unix.stackexchange.com/questions/240502
O puede agregar esas definiciones de variables a su archivo ~/.lftp/rc
.