Если вам интересно узнать, почему? это так, то вы можете посмотреть ответ на этот вопрос ответ в исходниках ядра здесь:
if (!data || !table->maxlen || !*lenp || (*ppos && !write)) {
*lenp = 0;
return 0;
}
В основном, поиск (*ppos
не 0) не реализован для чтения (!write
)
значений sysctl, которые являются числами. Всякий раз, когда выполняется чтение из /proc/sys/fs/file-max
,
рассматриваемая процедура
__do_proc_doulongvec_minmax()
вызывается из записи для file-max
в
конфигурационной таблице в
том же файле.
Другие записи, такие как /proc/sys/kernel/poweroff_cmd
, реализуются через
proc_dostring()
, которая разрешает поиск, так что вы можете сделать dd bs=1
на ней и читать из оболочки без проблем.
Обратите внимание, что начиная с ядра 2.6 большинство /proc
чтений было реализовано через новый API
под названием
seq_file
и он поддерживает seeks, так что чтение /proc/stat
не должно вызывать проблем.
проблем. Реализация /proc/sys/
, как мы видим, не использует этот
api.
Причина, по которой команда setxkbmap
не выполнялась после ее добавления в ~/.profile
заключается в том, что этот файл читается вашей оболочкой (, что, вероятно, bash )только при запуске оболочки login . В эмуляторах терминала X
не запускать оболочки входа в систему. Вы добавляете setxkbmap
к вашему ~/.bashrc
, если вы используете Bash
, но есть лучший способ доступен в системах debian
-изменить раздел XKBOPTIONS
в вашем /etc/default/keyboard
, например:
root@debian:/home/ja# cat /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps"
BACKSPACE="guess"
Теперь запустите эту команду, как описано вman 7 keyboard
:
udevadm trigger --subsystem-match=input --action=change
Вам даже не нужно перезапускать lightdm
. В следующий раз lightdm
будет будут применены запущенные настройки в /etc/default/keyboard
. автоматически. Я только что проверил это на своем Debian 9.4
.
Я думаю, что лучше всего создать файл.xsessionrc в вашем домашнем каталоге.
cat.xsessionrc
setxkbmap -option ctrl:nocaps
Этот файл считывается при каждом запуске сеанса.
Таким образом, затрагивается только ваша сессия.
Другие пользователи этого не понимают.
Это нормально для Debian и NetBSD.