Ubuntu 16.04에서는 다음 코드를 추가했습니다 /etc/bash.bashrc
.
alias ll="ls -la --group-directories-first"
그런 다음 재부팅합니다.
/etc/bash.bashrc
참고: 하나의 파일에 모든 별칭이 필요하고 모든 사용자가 사용할 수 있기 때문에 이것을 사용하고 있습니다 .
내 의도는 "기본" 별칭을 재정의하는 것입니다 ll
. 그러나 디렉터리와 파일이 포함된 디렉터리로 이동한 다음 실행하면 ll
목록이 표시됩니다.아니요디렉토리는 파일 위에 정렬됩니다. 다시 말해서.
내가 뭘 잘못했나요?
답변1
별칭은 ll
default 에 정의되어 있습니다 .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_profile
OR $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.bashrc
alias
ll () {
ls -la --group-directories-first
}