다르게 동작하도록 배포 종속 Bash 별칭을 재정의합니다.

다르게 동작하도록 배포 종속 Bash 별칭을 재정의합니다.

Ubuntu 16.04에서는 다음 코드를 추가했습니다 /etc/bash.bashrc.

alias ll="ls -la --group-directories-first"

그런 다음 재부팅합니다.

/etc/bash.bashrc참고: 하나의 파일에 모든 별칭이 필요하고 모든 사용자가 사용할 수 있기 때문에 이것을 사용하고 있습니다 .


내 의도는 "기본" 별칭을 재정의하는 것입니다 ll. 그러나 디렉터리와 파일이 포함된 디렉터리로 이동한 다음 실행하면 ll목록이 표시됩니다.아니요디렉토리는 파일 위에 정렬됩니다. 다시 말해서.

내가 뭘 잘못했나요?

답변1

별칭은 lldefault 에 정의되어 있습니다 .bashrc.

별칭 정의는 명령입니다. Bash는 명령을 차례로 실행하는 명령형 언어입니다. 동일한 별명에 대한 정의가 여러 개 있는 경우 쉘이 정의 중 하나를 실행할 때마다 별명이 재정의됩니다. 따라서 마지막 정의가 승리합니다.

Bash가 시작되면 먼저 시스템 파일을 읽은 /etc/bash.bashrc다음 사용자 파일을 읽습니다 ~/.bashrc. 따라서 의 정의는 ~/.bashrc의 동일한 별칭 정의를 재정의합니다 /etc/bash.bashrc. .NET /etc/bash.bashrc에서 재정의를 방지하기 위해 아무 것도 할 수 없습니다 ~/.bashrc.

사용자에게 편리한 별칭을 부여하는 것은 의미가 없습니다. 이것이 바로 in이 아닌 in에 ll정의된 이유입니다 . 따라서 선호하는 정의를 시스템 파일에 두는 대신 사용자 파일에 두십시오.~/.bashrc/etc/bash.bashrc

기본값을 변경할 수 있습니다 .bashrc. 즉, /etc/skel/.bashrc이 파일은 사용자 계정이 생성될 때 사용자의 홈 디렉터리에 복사됩니다. 파일을 변경해도 /etc/skel기존 계정에는 영향이 없습니다. 그러나 이것 역시 당신이 정의하는 것은 개인적인 취향이기 때문에 좋은 생각이 아닙니다.

답변2

/etc/bash.bashrc모든 사용자가 사용 가능

~/.bashrc홈 폴더가 있는 사용자에게만 적용됩니다.

ll따라서 에서 별칭을 변경 /etc/bash.bashrc하고 실행 하면 에서 정의된 별칭이 의 정의보다 우선하므로 에서 정의 ll된 별칭의 출력을 얻게 됩니다 .~/.bashrc~/.bashrc/etc/bash.bashrc

간단히 말해서;새로운의 별칭 /etc/bash.bashrc이지만 재정의하려면 를 변경하세요 ~/.bashrc.

편집하다:

모든 것을 하나의 파일에 담으려면 모든 사용자의 모든 별칭 ~/.bashrc ~/.bash_profile및/또는 ~/.profile모든 사용자의 파일에서 모든 별칭을 제거하고 이 파일에 모든 별칭을 추가하면 /etc/bash.bashrc문제 없이 전역 별칭 ​​구성이 생성됩니다.

편집 2:

새 사용자가 생성될 때 기본 별칭이 설정되지 않도록 /etc/skel/.bashrc기본 구성을 생성하거나 편집 하고 복사합니다..bashrc

편집 제안을 해주신 @user4556274에게 감사드립니다.

답변3

/etc/bash.bashrc나는 이것이 문제가 아니라고 확신합니다 . 당신이 찾고 있는 파일은 $HOME/.bash_profileOR $HOME/.profile또는 당신이 사용할 수 있는 것이지만, 이것이 당신이 성취하고자 하는 것에 적합한 파일이라고 $HOME/.bashrc생각합니다 .profile

.bash_profile와 의 차이점에 대한 설명은 .bashrc다음을 참조하세요.http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html

source 에 .profile다음 .bash_profile을 추가하십시오 .bash_profile.

if [ -f ~/.profile ]; then
  . ~/.profile
fi

또 다른 잠재적인 옵션은 대신에 함수를 넣는 것입니다 ll. 저는 함수가 동일한 이름을 가진 모든 별칭 세트보다 우선한다고 믿습니다.function/etc/bash.bashrcalias

ll () {

  ls -la --group-directories-first

}

관련 정보