seq decimal separator

Имя ресурса X состоит из списка компонентов, разделенных периодами. Каждый компонент может быть либо именем экземпляра, либо именем класса. Экземпляры идентифицируют конкретный компонент (например, третью кнопку в верхнем ряду), в то время как классы идентифицируют тип компонентов (например, все кнопки в главном окне). По соглашению, имена классов начинаются с заглавной буквы, а имена экземпляров - со строчной. См. Сомнения по поводу создания файла .Xresources. или в документации по X для получения более подробной информации.

Первым компонентом имени ресурса является приложение. На этом уровне именем класса является некоторое имя приложения, выбранное автором приложения; для Xterm это XTerm (по соглашению, для приложений, называемых X Foo, вторая буква также пишется с заглавной). По умолчанию имя экземпляра - это имя исполняемого файла, используемого для запуска приложения. Обычные приложения X поддерживают опции командной строки -name и -class для переопределения этих значений по умолчанию.

Когда вы запускаете Xterm через символическую ссылку, это изменяет имя исполняемого файла (важно имя, которое вы используете, или, точнее, имя, которое вызывающие процессы передают в аргументе 0). Таким образом, имя экземпляра (используемое, помимо прочих менее заметных вещей, для поиска ресурсов) меняется. Если вы хотите, чтобы ваши настройки применялись независимо от имени, используемого для вызова Xterm, определите ваши ресурсы (в ~/.Xresources или любом другом файле, куда вы решили их поместить) через класс, например,

XTerm.VT100.background:        Black

вместо экземпляра (xterm.VT100.background).

5
02.02.2019, 00:02
1 ответ

Чтобы исключить ошибки в самих локалях, я (re )сгенерировал как de_DE.UTF-8, так и en_US.UTF-8через

dpkg-reconfigure locales

и теперь seqповедение похоже зависит отLC_NUMERICИLANG.

Если LC_NUMERICне установлено/пусто, LANGопределяет поведение, в противном случае переключение LC_NUMERICмежду de_DE.UTF-8и en_US.UTF-8переключает между запятыми и точками соответственно.


Особые опасности

В самом случае установки неправильного/несуществующего значения для LANGи не -точка -на основе locale, поведение может быть смешанным в некоторых особых случаях, например.

LANG=en_US
#it should be en_US.UTF-8
LC_NUMERIC=de_DE.UTF-8

seq 0.1 0.2 1.3
0.1
0.3
0.5
0.7
0.9
1.1
1,3

Это не похоже на seq 0.1 0.2 1.4, но также и наseq 0.1 0.2 1.9-очень странное и ИМХО очень опасное поведение. Так что будьте осторожны с переносимостью seqили определите локали для любого скрипта.

Предполагаю, что это связано с некоторыми ручными изменениями в конкретных случаях (см.:https://lists.gnu.org/archive/html/bug-coreutils/2008-09/msg00192.html)


ОБНОВЛЕНИЕ:

Разработчики предлагают во избежание ошибок, связанных с локализованными форматами вывода, определить локаль в самом скрипте(LC_NUMERIC=C). Изменение этого поведения не планируется. (См. связанную ветку с патчем ниже)

Проблема со смешанным выводом точек и запятых из-за неправильных настроек локали была признана ошибкой и уже исправлена ​​сопровождающими:

https://lists.gnu.org/archive/html/coreutils/2019-02/msg00002.html

5
27.01.2020, 20:40

Теги

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