내 코드는 다음과 같습니다 .bashrc
.
c() { cd "$@" && ls -a ; }
alias cdd="c ~/Downloads"
alias r=". ~/.bashrc"
새 터미널을 로드하면 cdd
명령을 실행할 때까지 작동하지 않습니다 r
. 하지만 그렇게 한 후에는 예상대로 작동했습니다. 왜 이런거야?
나는 물었다같은 질문몇 달 전에 Stack Overflow에 있었지만 단 한 번의 답변도 제대로 작동하는 솔루션을 제공할 수 없었습니다.내 도트 파일에 대한 링크는 다음과 같습니다.그게 무슨 소용이 있다면.
편집하다 type -a c cdd r
생산하다:
c is aliased to `clear'
c is a function
c ()
{
cd "$@" && ls --color=auto -a
}
cdd is aliased to `c ~/Downloads'
r is aliased to `. ~/.bashrc'
이 정보를 바탕으로 c
기능을 변경하여 d
작동합니다. 그렇긴 하지만, (이미 했던 것처럼) Clear 함수를 c에 매핑하지 않는 방법이 있나요 alias cs='printf "\033c"'
? 주위를 둘러보았지만 .bashrc
'Clear'라는 단어가 포함된 항목을 찾을 수 없었습니다.
답변1
c
별칭이지만 clear
자체 쉘 초기화 파일이 아닌 경우 아래 시스템 전체 초기화 파일에서 수행될 가능성이 높습니다 /etc
. 예를 들어, 어떤 파일이 사용되는지 확인하세요 /etc/bash.bashrc
(또는 매뉴얼을 참조하세요 . 이는 빌드 방법 bash
에 따라 시스템마다 다를 수 있습니다 ).bash
c
별칭을 지정할 때마다 함수로 정의하기 전에 별칭을 해제 clear
할 수 있습니다.c
unalias c
$HOME
대신 사용을 고려할 수도 있습니다 ~
. 이는 $HOME
더 설명적이고(별칭의 일부이므로 실제로 입력할 필요가 없으므로 아무것도 "잃어버리지" 않음) 변수로 작동하기 때문입니다. 사실은 ~
그렇지 않습니다. 바라보다큰따옴표 안에서 물결표(~)가 확장되지 않는 이유는 무엇입니까?