"set -o vi"를 넣을 올바른 스크립트 파일은 무엇입니까?

"set -o vi"를 넣을 올바른 스크립트 파일은 무엇입니까?

대화형(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.bashrcBash입니다. 다른 쉘에는 다른 규칙이 있습니다.

의견의 Kusalananda와 마찬가지로, 귀하가 말했듯이 귀하가 시스템의 유일한 사용자이더라도 전역 기본값을 변경하지 말 것을 촉구합니다. 시스템 관리자 팀의 일원으로 일한 적이 있고 해당 팀의 최소 한 명의 구성원이 자신과 충돌하는 강한 선호도를 갖고 있는 경우(쉘 vi/emacs 모드 선택에서) 전역 기본값을 변경하면 적대감이 놀라운 결과를 초래할 수 있습니다. (거기 가봤고, 봤어요.)

모두를 만족시키는 유일한 솔루션은 sudo -s옵션을 설정하지 않고 루트가 되어 루트 쉘이 홈 디렉토리(및 선호하는 설정)를 사용하는 것입니다. 이를 통해 팀의 모든 관리자는 다른 사람을 거치지 않고 자신의 기본 설정을 수용할 수 있습니다. .sudoersalways_set_homeroot

sudo더 강력한 감사 요구 사항이 있는 일부 시스템에서는 루트로 실행되는 셸을 사용하는 대신 각각의 개별 권한 있는 명령을 실행하여 언제, 누구에 의해 권한 있는 명령을 사용했는지에 대한 명확한 로그를 제공 해야 할 수도 있습니다 . 물론 홈 시스템에서 원하는 것은 무엇이든 할 수 있지만 언젠가 금융, 의료 또는 국가 보안에 민감한 환경에서 시스템 관리자로 일할 수 있다고 생각한다면 대화형 루트 셸을 피하는 습관을 가지십시오. 당신을 잘 섬길 것입니다.

관련 정보