그래서원격 전송 프로토콜다음과 같은 이상한 쉘 변수를 사용하십시오.
xfer:log-file = 1
sftp:connect-program = “ssh -a -x -i keyfile”
이 변수를 어떻게 설정합니까? set
, 및 env
; 을 직접 사용해 보았지만 xfer:log-file=1
이들 중 어느 것도 작동하지 않는 것 같습니다.
어떤 도움이라도 대단히 감사하겠습니다 :)
답변1
이는 쉘 변수가 아니며 구성 변수, CLI 프롬프트 또는 구성 파일에서 lftp
설정되는 변수 이며 모든 변수와 동일합니다.lftp
lftp
lftp
껍데기(자신을 쉘이라고 생각하고 싶지 않은 경우는 lftp
쉘과 유사한 언어에 대한 해석기이고 !
연산자를 사용하여 명령을 실행할 수도 있기 때문입니다(실제 쉘에 의존하지만)).
동일한 이름을 가진 쉘 변수를 정의하려는 경우(그런데 왜 그렇게 합니까?) 대부분의 쉘에는 변수 이름이 포함할 수 있는 문자에 대해 많은 제한이 있다는 점에 유의하십시오.
대부분의 쉘에서 변수 이름은 문자 또는 밑줄(일부 쉘의 로케일에 정의된 대로 ASCII 문자 또는 알파벳 문자일 수 있음)로 시작하고 문자, 십진수 및 밑줄로만 구성됩니다.
일부 쉘 rc
에서는 변수 이름의 es
모든 문자를 선호하거나 허용합니다( =
( 및 NUL 제외).rc
; a:b = c
; echo $'a:b'
c
bash
, yash
일부 버전 zsh
에서는 문자를 로케일에서 알파벳순으로 분류할 수 있으므로 :
알파벳순으로 분류되는 사용자 정의 로케일을 구축하여 이러한 쉘이 문자를 유효한 변수 이름 문자로 허용하도록 속일 수 있지만 :
이는 매우 나쁜 생각입니다. (이미 특별한 의미를 갖고 있는 in 과 같은) 것은 확실히 깨질 것입니다 ${var:something}
.bash
zsh
지금환경변수 이름에는 NUL 및 =
. 따라서 :
또는 다음을 포함하는 명령 에 환경 변수를 전달할 수 있습니다 -
.
$ env foo:bar=baz printenv foo:bar
baz
rc
그러나 / 이외의 셸에서는 es
이를 사용할 수 없으며 일부 셸에서는 환경에서 이를 제거할 수도 있습니다(이는 lftp
환경 변수를 구성 변수에 매핑하지 않는 경우에는 영향을 미치지 않습니다).
lftp
시작 시 이러한 변수를 설정하려면 다음을 수행할 수 있습니다.
lftp -e 'set xfer:log-file transfer.log' sftp://server/
또는 비대화형 사용을 위해 lftp 스크립트에 포함시킵니다.
lftp -c '
set xfer:log-file transfer.log
get https://unix.stackexchange.com/questions/240502'
또는
#! /usr/bin/lftp -f
set xfer:log-file transfer.log
get https://unix.stackexchange.com/questions/240502
또는 이러한 변수 정의를 ~/.lftp/rc
.