대화형(bash) 셸의 모든 사용자에 대해 기본적으로 이 기능이 켜져 있기를 원한다는 점을 덧붙여야 합니다. 비록 내가 유일한 사용자인 내 홈 시스템에서 이 작업을 수행하고 있지만 루트가 대화형 셸에 대해서도 이 기능을 활성화하고 싶습니다.
set-readline.sh
이 줄이 포함된 파일을 추가 해야 하는지 /etc/profile.d/
, 아니면 자체적으로 수행해야 하는지 /etc/profile
, 아니면 어디서(어쩌면 어떻게) 올바르게 수행해야 하는지 궁금합니다 .
답변1
배포판에 이 이 있는 경우 일반적 으로 Bourne/POSIX 호환 셸 또는 동등한 셸이 소스를 제공한다는 /etc/profile.d
의미입니다./etc/profile
모두파일 일치 /etc/profile.d/*.sh
따라서 모든 사용자에 대해 고유한 사용자 정의를 추가하려면 고유한 파일을 만들어야 합니다 /etc/profile.d/set-vimode.sh
.
그러나 set -o vi
이는 셸 설정이므로 한 프로세스에서 다른 프로세스로 상속될 수 없습니다. 따라서 로그인 쉘뿐만 아니라 모든 쉘이 시작될 때 이를 설정해야 합니다. 이러한 성격의 전역 설정의 경우 시작하기 가장 좋은 곳은 /etc/bash.bashrc
Bash입니다. 다른 쉘에는 다른 규칙이 있습니다.
의견의 Kusalananda와 마찬가지로, 귀하가 말했듯이 귀하가 시스템의 유일한 사용자이더라도 전역 기본값을 변경하지 말 것을 촉구합니다. 시스템 관리자 팀의 일원으로 일한 적이 있고 해당 팀의 최소 한 명의 구성원이 자신과 충돌하는 강한 선호도를 갖고 있는 경우(쉘 vi/emacs 모드 선택에서) 전역 기본값을 변경하면 적대감이 놀라운 결과를 초래할 수 있습니다. (거기 가봤고, 봤어요.)
모두를 만족시키는 유일한 솔루션은 sudo -s
옵션을 설정하지 않고 루트가 되어 루트 쉘이 홈 디렉토리(및 선호하는 설정)를 사용하는 것입니다. 이를 통해 팀의 모든 관리자는 다른 사람을 거치지 않고 자신의 기본 설정을 수용할 수 있습니다. .sudoers
always_set_home
root
sudo
더 강력한 감사 요구 사항이 있는 일부 시스템에서는 루트로 실행되는 셸을 사용하는 대신 각각의 개별 권한 있는 명령을 실행하여 언제, 누구에 의해 권한 있는 명령을 사용했는지에 대한 명확한 로그를 제공 해야 할 수도 있습니다 . 물론 홈 시스템에서 원하는 것은 무엇이든 할 수 있지만 언젠가 금융, 의료 또는 국가 보안에 민감한 환경에서 시스템 관리자로 일할 수 있다고 생각한다면 대화형 루트 셸을 피하는 습관을 가지십시오. 당신을 잘 섬길 것입니다.