내 .bashrc
파일에는이 효과에 대한 줄이 포함되어 있습니다.
alias prog="/path/to/script.sh $(find $(pwd) -name prog)"
이 줄을 주석 처리하면 새 터미널을 열 때 Bash가 거의 즉시 시작됩니다. 이 줄을 사용하면 커서가 표시되기까지 4-5 초의 지연이 있습니다.
중첩 된 명령 $(pwd)
등을 제거하면 속도가 다시 빨라집니다. 왜 이런 일이 발생합니까? 어떻게 든 중첩 된 명령을 계속 사용할 수 있습니까?
답변
명령 대체는 큰 따옴표 안에 있으므로 명령이 정의 될 때 평가됩니다. 이 발생 find
하면서 하드 디스크 내용을보고 .bashrc
실행됩니다.
대조적으로, 당신은 사용시 평가를 원하는 것처럼 보입니다. 이 경우 작은 따옴표를 사용하십시오.
alias prog='/path/to/script.sh $(find "$(pwd)" -name prog)'
발견 된 파일 중 파일 이름에 공백이 있으면이 별명은 실패합니다. 이를 피하려면
alias prog='find . -name prog -exec /path/to/script.sh {} +'
후자의 형식은 모든 종류의 파일 이름에 안정적으로 작동합니다.