Да, это разрешено.
Статья в Википедии о shebang включает электронное письмо от Денниса Ритчи 1980 года, когда он представлял в ядре поддержку shebang (как часть более широкого пакета, называемого директивами интерпретатора ) в Версия 8 Unix (выделено мной):
Система была изменена так, что если исполняемый файл начинается с магических символов
#!
, остальная часть строки понимается как имя интерпретатора для исполняемого файла. […]Чтобы воспользоваться этой замечательной возможностью, поместите
#! / bin / sh
на левом поле первой строки ваших сценариев оболочки. Пробелы после
!
в порядке.
Итак, пробелы после шебанга существуют довольно давно, и действительно, в примере Денниса Ричи они используются.
Обратите внимание, что ранние версии Unix имели ограничение в 16 символов в этой строке интерпретатора, поэтому у вас не могло быть произвольного количества пробелов в ней. Это ограничение больше не действует в современных ядрах.
Создайте дерево каталогов в /home/<user>/
с той же структурой, что и /usr/share/X11/xkb/
. Другими словами:
$ tree -L 1
.
├── compat
├── geometry
├── keycodes
├── rules
├── symbols
└── types
Так что поместите соответствующие файлы в compat
, symbols
и т. д. Вам, очевидно, не нужно создавать пустые каталоги, просто каталоги для нужных вам файлов.
Затем рассмотрите возможность переименования файла символов во что-то отличное от us
. Может быть способ устранить неоднозначность вашего собственного файла символов us
из файла под /usr/share/X11/xkb/
, но проще просто выбрать новое имя, которое не появляется в /usr/share/X11/xkb/symbols/
. mine
подойдет.
Допустим, вы поместили свой пользовательский каталог Xkb в /home/<user>/my-xkb
и что ваш файл пользовательских символов называется mine
.
Если вы используете setxkbmap(1)
для установки своего макета, вам просто нужно изменить его, чтобы распечатать вывод и передать его на xkbcomp(1)
. Итак, если это ваш setxkbmap
призыв:
setxkbmap mine
Вам нужно изменить его на это:
setxkbmap mine -print |
xkbcomp -I"/home/<user>/my-xkb" - "$DISPLAY"