그래서lftp다음과 같은 이상한 쉘 변수를 사용합니다.
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 문자 또는 알파벳 문자일 수 있음)로 시작하고 문자, 십진수 및 밑줄로만 구성됩니다.
일부 쉘에서는 변수 이름에 모든 문자( ( ) 및 NUL 제외)를 허용 rc
하거나 허용합니다.es
=
rc
; a:b = c
; echo $'a:b'
c
bash
, yash
일부 버전의 zsh
문자는 로케일에서 알파벳순으로 분류되도록 허용하므로 가 알파벳순으로 분류되는 :
사용자 정의 로케일을 구성하여 해당 쉘을 속여 유효한 변수 이름 문자로 허용할 수 있지만 :
이는 다소 나쁜 생각입니다. 확실히 깨뜨려야 합니다(예를 들어 및 ${var:something}
에는 이미 특별한 의미가 있습니다 ).bash
zsh
지금환경변수 이름에는 NUL 및 =
. 따라서 :
또는 다음을 포함하는 명령에 환경 변수를 전달할 수 있습니다 -
.
$ env foo:bar=baz printenv foo:bar
baz
그러나 쉘( rc
/ 제외 es
)은 이를 사용할 수 없으며 일부 쉘은 환경에서 이를 제거할 수도 있습니다( lftp
환경 변수를 구성 변수 AFAIK에 매핑하지 않는 것에 영향을 미치지 않습니다).
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
.