모든 사용자의 별칭을 사전 설정하려면 어떻게해야합니까?


38

우분투 14.04.2가 있습니다. 모든 사용자가 자동으로 특정 별칭 집합을 갖도록 만들고 싶습니다. 개인 .bashrc에 별칭을 설정했지만 다른 사용자에게 수동으로 복사하지 않아도됩니다. 이상적으로는 새로 작성된 사용자에 대해서도 자동으로 설정해야합니다.


1
"사전 설정"이란 특정 별칭을 사용하여 모든 사용자를 생성 한 다음 쉽게 재구성 할 수 있다는 의미 입니까? 또는 모든 사용자가 항상 별명을 지정하고 재정의 / 정의를 해제 할 수는 있지만 전역 구성 명을 작성하고 싶다는 것을 의미합니까? 멍청이)? 또는 다른 것? 관련 : .bashrc 및 .bash_profile을 받음 (홀수 제목에도 불구하고 그 질문 과이 질문은 실제로 매우 유사하다고 생각합니다).
Eliah Kagan

답변:


50

스크립트를 작성하여 /etc/profile.d/모든 사용자의 별명을 작성할 수 있습니다 .

  1. 에 파일 00-aliases.sh(또는 다른 이름)을 작성하십시오 /etc/profile.d.

    gksu gedit /etc/profile.d/00-aliases.sh
    
  2. 이 파일에 별명을 넣으십시오. 예:

    alias foo='bar --baz'
    alias baz='foo --bar'
    
  3. 파일을 저장하십시오

  4. 열린 터미널을 다시 시작하여 변경 사항을 적용하십시오.
  5. 즐겨!

몇 가지 참고 사항 :

  • /etc/profile이전에 실행되는 전역 파일입니다 ~/.profile.
  • /etc/profile.d/ 에 의해 호출 된 스크립트가 포함 된 폴더입니다 /etc/profile
  • 경우 /etc/profile라고합니다 (당신이 시작할 때 / 쉘 로그인), 그것으로 끝나는 모든 파일을 검색 .sh에서 /etc/profile.d/이러한 명령 중 하나를 실행합니다 :

    source /etc/profile.d/myfile.sh
    

    . /etc/profile.d/myfile.sh
    
  • 00-파일 이름 앞에 두어 나머지 스크립트보다 먼저 실행되도록합니다.
  • 에 별칭을 추가 할 수도 /etc/profile있지만 권장하지는 않습니다.

2
완벽하게 작동합니다! /etc/profile.d의 목적이 무엇인지 간단히 설명해 주시겠습니까?
Brian Sizemore

1
@BrianSizemore : 몇 가지 설명으로 답변을 업데이트했습니다. 더 궁금한 점이 있습니까?
Helio

1
이것은 그것을 잘 설명합니다. 설명을 통해 다른 용도도 개발할 수 있습니다. 모든 도움을 주셔서 감사합니다!
Brian Sizemore

4
이 답변의 방법을 사용해서는 안됩니다. (또는 ) .sh파일의 별칭은 로그인 셸에 대해서만 정의 되며 대화 형 비 로그인 셸에서는 작동하지 않습니다. 환경 변수와 달리 bash는 자식 bash 쉘뿐만 아니라 자식 프로세스로 별칭을 내보낼 수 없습니다. 이 방법은 단지 이러한 가상 콘솔 또는 SSH를 통해 로그온하여 얻은 원래 쉘로 로그인 쉘, 테스트 않다면 제대로 작동하는 것처럼 보일 수 있지만, 그것은 그들의 자녀 껍질에 실패 하고 또한 GUI 터미널 창에 의해 시작 껍질에 실패합니다. /etc/profile.d//etc/profile
Eliah Kagan

2
@Helio 내 대답하고 Undertanding .bashrc와 .bash_profile에 대한 자세한 설명과 함께, 목적이 무엇인지에 따라 두 가지 다른 방법을 제공합니다. 이 질문이나 그 질문이 중복으로 간주 될 수 있는지 확실하지 않습니다. OP에서 필요에 대해 명확하게하기 위해이 질문에 대해 언급했습니다. 나는 그래서이 질문은 더 좁게 하나보다 범위가 가정 내가 내 긴 하나의 재료의 일부를 덮고 여기에 짧은 대답을 게시하는 것이 확인 될 것입니다. (현재로서는 OP에 의해 내 의견에 대한 답변을 받기를 희망합니다.)
Eliah Kagan

6

여기 에서 지적했듯이 전역 별칭을 추가하는 것이 좋습니다 /etc/bash.bashrc.

alias foo='bar --baz'
alias baz='foo --bar'

(로그인이 아닌) 특정 쉘에 대해서는 스크립트를 /etc/profile.d무시할 수 있기 때문 입니다. 왜 /etc/profile.d작동하지 않는지 알아내는 데 몇 시간이 걸렸습니다 .

쉘 간 구별에 대해서는 예를 들어 https://askubuntu.com/a/606882/.bashrc 및 .bash_profile 이해를 참조하십시오 .


5

별명은 쉘 내부에서만 작동합니다. 실행 파일처럼 광범위하게 액세스 할 수있는 것을 원하는 경우 다음과 같은 작은 바로 가기 스크립트를 추가 할 수 있습니다 /usr/bin.

#!/bin/sh
ls -l "$@"

"$@"실행에 이르기까지 모든 인수를 전달합니다. 스크립트 이름은 실행 파일 이름입니다.

출처 : https://unix.stackexchange.com/a/52509/15954


이 답변은 관련이없는 것 같습니다. 해결 된 답변 인 것처럼 받아 들여진 대답은 질문에 올바르게 대답합니다.
Brian Sizemore

3
@BrianSizemore 나는 같은 질문을했지만 내 경우에 더 적합한이 솔루션을 발견했습니다. 바라건대 비슷한 상황에서 다른 사람들을 도울 것입니다. 많은 사람들에게 별칭은 괜찮을 것입니다.
jtpereyda

1
@BrianSizemore이 답변은 일반적인 오해 (나도 가지고 있음)를 분명히하고 유용하고 직접 관련이 있습니다.
a20

0

/ etc / bashrc

  • 시스템 전체 기능 및 별칭
  • 환경 관련 내용은 / etc / profile에 있습니다.

수행중인 작업을 모르면이 파일을 변경하지 않는 것이 좋습니다. /etc/profile.d/에 custom.sh 쉘 스크립트를 작성하여 환경을 사용자 정의로 변경하면 차후 업데이트에서 병합 할 필요가 없으므로 훨씬 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.