여러 사용자에 대해 단일 .bashrc 파일을 설정하려면 어떻게해야합니까?


30

내 작업 중에 bashrc에 지속적으로 별칭 명령을 추가해야하며 이러한 명령의 대부분은 다른 사용자가 실행해야합니다. 외부 소스에서 bashrc에 별칭 명령을 추가 할 수있는 방법이 있습니까?

답변:


40

사용자 홈 디렉토리에있는 많은 설정 파일은 사용자 홈에있는 /etc김프 설정이있는 시스템 설정 보다 파일을 덮어 쓰거나 ~/.gimp-2.*추가합니다 /etc/gimp/2.0.

따라서 ~/.bashrc시스템 전체 구성 파일 /etc/bash.bashrc (기능 / 별칭 ) 또는 /etc/profile (환경 관련 사항)을 편집 할 수 있습니다 man bash.

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bash_logout
              The systemwide login shell cleanup file, executed when a login shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

이 경고는 파일의 일부 Linux 시스템에 대해 제공됩니다.

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

따라서 해당 파일을 편집 할 수 있으며 먼저 백업 ( cp /etc/bash.bashrc /etc/bash.bashrc-backup예 :)하거나 셸 스크립트를 /etc/profile.d생성 할 수 있습니다. 예를 들어 sudo / root를 사용하여 다음 명령으로 파일을 생성 할 수 있습니다.

touch /etc/profile.d/custom.sh
chmod +x /etc/profile.d/custom.sh

그런 다음 nano /etc/profile.d/custom.sh

#!/bin/sh
alias ls='ls -lah'

그리고 출력에 나타나는지 확인하여 작동하는지 확인하십시오 alias-변경 사항을 보려면 로그 아웃 / 로그인 또는 재부팅해야 할 수도 있습니다 (원치 않는 경우 source /etc/profile변경 후 작동 할 수 있음)

[편집 :이 데드 링크 제거] www.thelinuxdaily.com/2010/08/setup-a-universal-user-profile-with-etcprofile-dcustom-sh/]


5
거기에 좋은 제안이 많이 있습니다. 나는 언급 할 가치가있는 다른 옵션이 있다고 생각합니다. 새로 만든 사용자 /etc/skel/.bashrc의 내용을 변경하기 위해 편집 할 수 있습니다 ~/.bashrc.
kasperd

@kasperd-좋은 생각 (원한다면 원한다면 대답을 할 수있다)
Wilf

내 경험에, ~/.bash_logout/etc/bash.bash_logout작동하지 않습니다. :(
Paddy Landau

에서 AFAIK 별칭 /etc/profile.d/없는 하위 프로세스를 오른쪽으로 뽑힐? 따라서 별칭은 Bash가 로그인 쉘인 경우에만 사용할 수 있습니까?
Franklin Yu

나는 그들 중 일부는 TTY에서 유일한 환경으로 사용될 때만 작동한다고 생각합니다. 데스크톱 터미널에서는 일부가 사용되지 않을 수 있습니다. 나는 이것을 확인하기 위해 이것을 테스트해야하지만 지금은 할 수 없습니다!
Wilf

7

로 이동 /etc/bash.bashrc

vim /etc/bash.bashrc

거기에 별명을 만드십시오.

마지막 줄에 별칭을 추가하십시오.

alias abc = "무엇이든"

이 별칭은 모든 사용자에게 전역이됩니다.

그러나 보안상의 이유로 권장하지 않습니다.

profile.d사용자 환경 파일이 들어있는 디렉토리

가다

cd /etc/profile.d/

vim 별칭

여기에 별명을 추가하십시오.

시스템 파일에 영향을 미치지 않습니다. 환경 파일로 작업하는 것이 안전하고 올바른 방법입니다.


3

여기에는 이미 받아 들여진 대답이 있지만 /etc/profile.d 등의 파일을 엉망으로 만드는 것이 아니라 시스템 전체의 사용자 환경 구성을 처리하기 위해 일부 형태의 환경 모듈을 사용하는 것을 고려할 수 있습니다. 많은 쉘에서이 컨트롤을 한 곳에서 관리합니다. Lmod (매우 활발한 개발 중), C / TCL 모듈 (클래식 솔루션) 또는 Cmod (경량).


1

내가 올바르게하고 있는지 모르겠지만 / home / ComunAtodos 디렉토리 (자본 및 스페인어로 Linux 기본 디렉토리가 아님을 분명히 알 수 있음)를 유지하고 .bashrc, .nanorc 및 .bash_aliases가 있습니다. 그런 다음 /etc/skel/.profile에있는 항목을 참조하여 새 사용자가 해당 사용자를 가리키고 필요한 특정 사용자에게만 추가합니다.


-1

저는 Linux operativ 시스템을 처음 접했지만 시스템 파일 /etc/.bashrc 파일이 아닌 모든 사용자 .bashrc 파일을 수정하는 bash 스크립트를 스케치했습니다.

#!/bin/bash

X=$( cat etc/passwd | cut -f1 -d: ) #All-users

For X in /home/*/.bashrc ; do 

echo "alias ls='ls -al'" >> $X

2>/dev/null

done

source $X

exit 0

좋아, 나는 그 스크립트가 작동한다는 것을 알고 있지만, 결함이 없다면 :) 주문을 받아서 만드는.


3
첫 줄 (/ etc / passwd를 읽는 곳)은 아무 것도하지 않는 것 같습니다. 네 번째 줄은 실수 인 것 같습니다 (그리고 왜 오류를 억제하고 싶은지 모르겠습니다). "exit 0"은 중복입니다. 이를 위해서는 모든 사용자가 이미 .bashrc파일을 가지고 있어야하며 행이 이미 파일에 있는지 여부에 관계없이 항상 추가됩니다.
thomasrutter

그 줄을 가진 모든 사용자의 이름을 얻으려고 생각하고 있었습니까? 그러나 이제는 그것에 대해 생각하기 때문에 </ etc / passwd를 잘라낼 수 있습니다. 목록에 많은 이름이 있었으므로 bashrc file가없는 사람들을 위해 IT가 errrors를 만드는 것을 원하지 않았습니다. 줄이 존재하지 않는 경우에만 어떻게 추가 할 수 있습니까? 이 유형의 rask에 적합한 스크립트를 작성할 수 있습니까? 저는 일주일 동안 Linux를 사용하고 있습니다.
Farhad Rahimi

기술이 이미있는 것 같지만이 자습서는 쉘 스크립팅에 유용한 것입니다 : shellscript.sh . 줄이없는 경우에만 줄을 추가하는 방법과 같은 다른 질문은 여기에서 새 질문으로 자유롭게 질문하십시오.
thomasrutter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.