스크립트를 호출하는 Bash 별칭과 스크립트를 함수로 정의하는 Bash 별칭

스크립트를 호출하는 Bash 별칭과 스크립트를 함수로 정의하는 Bash 별칭

내 .bash_aliases 파일에는 150개 이상의 바로가기가 정의되어 있습니다. 그 중 일부는 간단한 명령입니다. 예를 들면 다음과 같습니다.

# Opens file with default program
o () { xdg-open "$@" & disown; }

# Folder shortcuts
alias ..='cd .. && ls'

다른 사람들은 다음과 같이 컴퓨터의 다른 곳에 있는 스크립트를 호출합니다.

alias i3exit='~/.config/i3/i3exit.sh'

o그리고 다른 것들은 위의 명령과 같이 30-80줄만 정의된 더 큰 스크립트입니다 .

bash 함수로 직접 정의된 스크립트와 다른 파일에서 스크립트를 호출하는 별칭의 차이점은 무엇입니까? 하나가 다른 것보다 더 선호됩니까? 그렇다면 그 이유는 무엇입니까?

직관상 별도의 스크립트 파일을 갖는 것이 더 좋을 것이라고 말하지만 이에 대한 어떤 주장도 없습니다.

답변1

~/.bash_aliasesUbuntu 관련 파일 에 이를 정의하고 ~/.bashrc기본 Ubuntu 설치에서 소스를 가져오면 예, 새 대화형 비로그인 셸을 시작할 때마다 파일이 소스로 제공되므로 오버헤드가 있습니다. . 예를 들어 새 터미널 창을 열 때마다 말이죠. 이제 최신 기계에서는 이러한 오버헤드를 감지할 수 없을 가능성이 높지만 오래된 기계나 임베디드 시스템에서는 문제가 될 수 있습니다.잔뜩복잡한 함수가 정의되었습니다.

또한 이 방식으로 정의된 함수와 별칭은 기본적으로 스크립트에서 액세스할 수 없습니다. 따라서 스크립트에서 해당 기능 중 하나를 사용하려면 명시적으로 소스 .bashrc(또는 .bash_aliases)를 지정해야 합니다. 에 외부 스크립트 파일로 있으면 $PATH필요하지 않습니다.

내 개인적인 경험 법칙은 관련된 명령의 복잡성과 내가 작성하는 함수/스크립트가 비대화형 쉘(예: 다른 스크립트)에 유용할지 여부로 귀결됩니다. 수십 줄의 코드를 작성하는 경우에는 해당 코드를 스크립트로 옮길 가능성이 높습니다. 다양한 상황에서 사용할 수 있고 다른 스크립트를 작성할 때 유용할 수 있는 내용을 작성하고 있다면 다시 스크립트로 옮길 것입니다.

그러나 귀하의 질문에 표시된 것과 같은 간단하고 작은 기능을 원하고 대화형으로 실행될 때만 정말 유용하다면 기능을 고수하겠습니다. 따라서 이는 실제로 개인 취향의 문제이며 정의한 기능을 언제 어떻게 사용할지 고려하는 것입니다.

관련 정보