별칭은 쉘 스크립트에서 실행 가능/실행 가능하지 않습니까? 맥 OS X 시에라 13.x

별칭은 쉘 스크립트에서 실행 가능/실행 가능하지 않습니까? 맥 OS X 시에라 13.x

이 스크린샷은 기본적으로 설명합니다.

https://gyazo.com/1a9d621efa28c7994c3a2afbe0411a2b

터미널 내에서 새 탭을 열고 다른 작업을 수행하기 위한 별칭 설정이 있습니다. 심지어 디버그 쉘 스크립트를 실행하기 위한 별칭도 있지만 스크립트는 debug.sh단순히 별칭인 을 사용하여 newtab새 탭을 열려고 합니다. 을 입력하면 작동 newtab하지만 작동하지 않습니다. .sh 또는 기타 실행 파일 내에서 다른 별칭도 작동하지 않습니다. 이 문제를 어떻게 해결합니까?

export내가 알아차린 한 가지 사실은 '와 alias' 를 모두 /etc/bashrcand not ~/.bash_profile또는 다른 곳에 넣고 있다는 것인데 , /etc/bashrc어디에도 언급된 것을 거의 볼 수 없습니다.

내가 제대로 하고 있는 걸까?

답변1

별칭 확장은 대화형 셸에서만 수행되고 스크립트 내에서는 수행되지 않으므로 로 확장 debug되지만 스크립트에서 호출되므로 자체적으로 확장되지는 않습니다.newtabnewtab

별칭 대신 내보낸 함수를 사용하면 다음과 같이 작동합니다.

debug() { $scripts/debug.sh; }; export -f debug
...
newtab() { $scripts/newtab.osx.sh; }; export -f newtab

스크립트가 하위 셸에서 실행되기 때문에 내보내기가 필요합니다. 하지만 인용한 특정 인스턴스의 경우 newtab함수만 있으면 됩니다.

함수는 어디에서나 별칭 대신 사용할 수 있지만 별칭으로는 할 수 없는 매우 간단한 요구 사항인 실행 문자열 끝에 추가 매개 변수를 추가하는 등 훨씬 더 많은 작업을 수행할 수 있습니다. 실제로 스크립트가 할 수 있는 모든 작업을 수행할 수 있지만 현재 셸에서 실행되는 스크립트와는 달리 스크립트가 달성해야 하는 명령이나 환경을 변경할 수 .있습니다 source.

관련 정보