`/etc/profile`의 키보드 구성이 작동하지 않습니다.

`/etc/profile`의 키보드 구성이 작동하지 않습니다.

다음은 키보드 레이아웃을 설정하기 위해 가져오거나 실행할 수 있는 스크립트입니다.

#!/bin/bash
# Testing to only apply the layout to Kinesis keyboard.
# Get Device ID with: `xinput -list | grep -i key
debug_out=/tmp/layout_kinesis.log

echo "layout_kinesis start" >> $debug_out 2>&1
echo $SHELL >> $debug_out 2>&1
date >> $debug_out 2>&1
whoami >> $debug_out 2>&1
kinesis_device_id=$(xinput --list | grep "05f3:0007[[:blank:]]*id=" | sed -n "s/^.*id=\(\S*\).*/\1/p") >> $debug_out 2>&1
echo "layout_kinesis id $kinesis_device_id" >> $debug_out 2>&1
if [ ! -z "$kinesis_device_id" ] ; then
    echo "layout_kinesis on display $DISPLAY" >> $debug_out 2>&1
    xkbcomp -i $kinesis_device_id /home/gauthier/kinesis/kinesis_swe_us.conf $DISPLAY >> $debug_out 2>&1
fi
echo "layout_kinesis id done" >> $debug_out 2>&1

리디렉션 열풍에 대해 죄송합니다. 편집증이 생겼습니다.

이것은 로그인한 상태에서 실행하거나 얻을 때 작동합니다.

이제 키보드가 연결되어 있으면 로그인한 모든 사람에 대해 설정하고 싶습니다. 스크립트를 에 복사했습니다 /etc/profile.d/layout_kinesis.sh. 여기에는 다음과 같은 권한이 있습니다 -rwxr-xr-x 1 root root.

레이아웃이 로드되지 않았습니다.

디버그 출력 파일은 합리적인 것 같습니다( stderr리디렉션 필요 xkbcomp: 그렇지 않으면 "계속하시겠습니까?" 팝업이 표시됨). 쉘은 이고 /bin/bash사용자는 내 것입니다. id(9) 및 DISPLAY( :0)는 올바른 것 같습니다. 많은 경고가 표시 xkbcomp되지만 그들은 평소와 같습니다.

로그인한 후 터미널 에뮬레이터에서 수동으로 소싱하면 /etc/profile.d/layout_kinesis.sh작동합니다. 그렇다면 애초에 안 될 이유가 무엇입니까? 소스는 맞는 것 같은데 효과는 없네요. 다른 시작 파일이 이 설정을 재정의합니까?


내가 조사한 것들:

  • 또는 언급이 없습니다 xkbcomp.setxkbmap/etc/profile.d/
  • ~/.profile아무 관련도 없어, ~/.bash_profile아무 관련도 없어~/.bash_login

이것은 우분투 20.04에 있습니다.

관련 정보