-to popd의 별칭이 작동하는지 확인하면서 bash 시작 시 로드할 수 있는 파일에 모든 별칭을 덤프하는 간단한 스크립트를 만들려고 합니다.
alias -p | sed 's/alias -=/alias -- -=/' > ~/.bash_aliases
명령줄에서 실행하면 작동하는 것처럼 보이지만 스크립트에 넣고 실행하면(상단 #!/bin/bash
및 chmod +x
) 빈 파일이 생성됩니다. 내가 놓치고 있는 bash 지식이 무엇인지 말해 줄 수 있는 사람이 있나요?
중요한 경우 bash v4.2.10을 사용하고 있습니다.
답변1
쉘 스크립트는 호출 프로그램의 환경 변수 등을 상속하지만 별칭 및 명령 기록과 같은 항목은 상속하지 않습니다.
모든 별칭이 공통 위치(예: )에 있는 경우 ~/.bashrc
먼저 해당 파일을 스크립트에 소스로 넣을 수 있습니다.
. $HOME/.bashrc
그런 다음 쉘 스크립트의 실행 컨텍스트에서 파일에 정의된 모든 별칭을 갖게 됩니다 .bashrc
.
별칭 정의가 여기저기에 있는 경우 쉽게 병합할 수 있는 방법이 없습니다. "내 모든 별칭 저장"을 함수로 작성해야 합니다. 예를 들어 다음과 같은 것을 추가할 수 있습니다 ~/.bash_profile
.
function dumpalias {
alias -p | sed 's/alias -=/alias -- -=/' > ~/.bash_aliases
}
dumpalias
그런 다음 로그아웃했다가 다시 로그인한 후 원하는 동작을 얻으라고 말할 수 있습니다 .