Обычно вещи, которые просят узел устройства как /dev/sda1
смотрят на чтение-запись блочное устройство вместо узла файла. Каталог в смонтированной файловой системе является совершенно другим видом объекта, чем узел блочного устройства.
Иногда вещи, которые обычно воздействовали бы на устройство, могут воздействовать на файл. Например, различные форматы файлов как ISO и dmg являются в основном "изображениями" блочных устройств, сохраненных в файле в некоторой файловой системе хоста, которая может иметь их собственные структуры файловой системы в них. Некоторое программное обеспечение знает, как иметь дело с подобными "файлами".
Кажется, существуют некоторые примечания о fileio по сравнению с blockio в на сайте, который Вы связываете, хотя это документация совсем не завершено. Это могло бы быть чем-то для изучения.
Это не переменные оболочки, это lftp
конфигурационные переменные, переменные, установленные для lftp
в lftp
подсказке CLI или в lftp
конфигурационных файлах, они не имеют ничего общего с какой-либо оболочкой (если только вы не хотите рассматривать lftp
как оболочку, поскольку он является интерпретатором языка, подобного оболочке, и даже может выполнять команды с помощью своего !
оператором (хотя для этого он полагается на настоящий shell)).
Если вы хотите, чтобы переменные оболочки были определены с одинаковыми именами (но зачем вам это?), имейте в виду, что большинство оболочек имеют много ограничений на то, какие символы могут содержать имена их переменных.
В большинстве оболочек имена переменных начинаются с буквы или знака подчеркивания (в некоторых оболочках это могут быть буквы ASCII или алфавитные символы, определенные вашей локалью) и состоят только из букв, десятичных цифр и знака подчеркивания.
Некоторые оболочки, такие как rc
или es
, допускают в имени переменной любой символ (кроме =
(для rc
) и NUL):
; 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
.