Разница между /etc/locale.conf и /etc/default/locale

the shell will read from the script file or from a device descriptor

Или из конвейера, что, вероятно, является самым простым способом получить ввод fd без -поиска.

Should the shell also read one character at a time from its script input?.

Если он хочет поддерживать сценарии, запускающие команды, считывающие данные со стандартного ввода, и ожидающие получения ввода с использованием строк из самого сценария.

Как-то так:

$ cat foo.sh
#!/bin/sh
line | sed -e 's/^/* /'
xxx
echo "end."

$ cat foo.sh | bash
* xxx
end.

Команда lineчитает одну строку из стандартного ввода (строку xxx), а оболочка читает остальные строки как команды. Чтобы это работало, lineтакже нужно позаботиться о том, чтобы не читать ввод слишком далеко, иначе оболочка не увидит следующие строки. С утилитами GNU head -n1будет читаться слишком много, например. sed. Утилита lineиз util -linux заботится о том, чтобы читать по одному байту за раз, чтобы не читать дальше новой строки.

Приведенный выше скрипт не работает, например, с. dash, так как скрипт считывает полные блоки за раз:

$ cat foo.sh | dash
* 
dash: 3: xxx: not found
end.

Dash и Busybox читали полные блоки, другие, которые я тестировал, (Bash, Ksh, mkshи Zsh )считывали байт -на -байт.

Обратите внимание, что это довольно запутанный сценарий, и он не работает должным образом, если выполняется, например, как. bash foo.sh, так как в этом случае stdinне указывает на сам скрипт, и строка xxxвоспринималась бы как команда. Вероятно, было бы лучше использовать документ здесь -, если вы хотите включить данные в сам скрипт. Это работает с любой оболочкой, при запуске как sh bar.sh,sh < bar.shилиcat bar.sh | sh:

$ cat bar.sh
#!/bin/sh
sed -e 's/^/* /' <<EOF
xxx
EOF
echo "end."
0
30.01.2021, 12:55
2 ответа

После некоторых экспериментов я определил, что KDE neon учитывает настройки локали в /etc/default/locale, но игнорирует настройки локали в /etc/locale.conf. Я до сих пор не понимаю, почему Ubuntu использует другое место для файла локали, но я пришел к выводу, что в дистрибутивах на основе Ubuntu необходимо использовать /etc/default/localeдля установки локали. Кроме того, я только что заменил /etc/default/localeна симлинк на /etc/locale.conf, и все работает нормально, но теперь у меня есть только один файл с настройками локали.

0
05.05.2021, 10:05

Различные дистрибутивы или версии Linux используют то или иное. В качестве примера, документация для Debian 10 ссылается в основном на /etc/default/locale(, например.man update-locale). Его части, связанные с systemd -, также относятся к /etc/locale.conf(, например.man locale.conf).

Краткий тест показывает, чтоlocalectl(также часть systemd Debian 10 )сообщает содержимое /etc/default/localeкак локаль системы, если /etc/locale.confтакже не существует :, в этом случае, очевидно, она имеет приоритет.

Я снова использую /etc/default/localeисключительно (в текущей версии Debian ). Я рассуждаю следующим образом :этот вариант может подойти для Debian, любой из них подходит для системы, так что в целом это очевидный выбор.

0
14.04.2021, 09:45

Теги

Похожие вопросы