저는 우리 팀이 매일 수행하는 특정 문제를 해결하기 위해 여러 유틸리티 스크립트를 개발했습니다.
동료의 노트북에 스크립트를 배포하기 위해 지금까지 수행한 작업은 다음과 같습니다.
- 각 솔루션에는
main.sh
스크립트(다른 스크립트 및 지원 파일 포함) 가 있습니다. - 사용자의 홈 폴더에 폴더를 만들고 거기에 파일을 넣습니다.
- Linux 배포판에 따라 별칭을 추가하거나
.bashrc
스크립트 를.bash_aliases
가리킵니다.main.sh
- 자동 완성 파일을 복사합니다
/etc/bash_completion.d/
(완성 파일 이름은 별칭에 확장자를 더한 것과 동일합니다.auto
). - 매뉴얼 페이지를 복사하고
/usr/share/man/man1/
gzip으로 압축합니다(man 파일 이름은 별칭에 확장자를 더한 것과 동일합니다.1
).
설치 프로그램을 만들고 싶지만 별칭 부분이 까다롭습니다.
- 자동화할 수 있는 더 나은 옵션(설치 프로그램)이 있습니까?
/usr/local/bin
별칭을 만드는 대신 main.sh 파일에 대한 소프트 링크를 넣을 수 있을까요 ?- 이에 대한 모범 사례가 있습니까?
답변1
글쎄요, 회사에서 일하는 것은 그리 어렵지 않습니다.내부에기능을 쉘 함수에 넣으십시오. 예를 들어:
fn(){
echo first time called\!
fn(){
echo not the first time called\!
}
}
fn; fn; fn
...인쇄됩니다...
first time called!
not the first time called!
not the first time called!
함수, 소스 파일 등에서 쉘 별칭을 정의할 수도 있습니다.아름다운프롬프트에서 현재 쉘 상태와 관련된 많은 작업을 수행할 수도 있습니다.와는 별개로위치 매개변수에 영향을 줍니다.(이것은 es로도 해결될 수 있지만 alias
).
그래서할 수 있다설치 소스를 고려하는 것이 좋습니다..fn.name
(무슨 상관이야)파일을 찾은 다음 rc 파일에서 한 번 호출합니다. 여기서 함수에 대한 초기 호출은 필요에 따라 모든 자체 설정을 처리한 다음 이후의 모든 호출에 대해 자체적으로 재정의됩니다.
또는 일부 쉘의 기능과 유사합니다.자동 로드, 다음과 같이 rc 파일을 읽을 때마다 정의되는 한 줄짜리 함수를 만들 수 있습니다.
printf '%b' '[ -f ~/.fn_name ] &&\n\tfn_name(){ . ~/.fn_name; }\n' >>~/.bash.rc
...그리고 ~/.fn_name
그 안에서
fn_name(){ : now redefine the function; }
... fn_name
첫 번째 호출 전에는 쉘 상태가 거의 사용되지 않으므로 덜 혼란스럽고 .bash.rc
쉽게 관리할 수 있습니다.
그러나 ~/.fn
이러한 모든 유형을 하나의 파일에 넣고 기본 rc에서 소스를 가져온 다음 거기에서 각 개별을 가져오는 것이 더 쉬울 수 있습니다.