2014-07-18 3 views
1

저는 스크립트를 "modulinos"라고 쓰고 싶습니다. 쉘 스크립트는 그 자체로는 작은 CLI 프로그램으로 호출되거나 다른 프로그램에 의해 라이브러리로 가져올 수 있습니다.zsh에서 모듈을 작성하는 방법은 무엇입니까?

https://github.com/mcandre/scriptedmain/tree/master/bash

을 그리고 나뿐만 아니라 zsh을이 작업을 수행하고 싶습니다 :

내가 함께 떠들썩한 파티에서이 작업을 수행 할 수 있습니다. 내가 어떻게 할 수 있니? 그들은 동일한있을 때, (소환 프로그램의 이름을 대이 스크립트의 이름을 발견, 즉

if [[ "$BASH_SOURCE" == "$0" ]] 
then 
    main 
fi 

:

가장 중요한 것은 bash는의를 에뮬레이트 할 수있는 방법을 찾는 것입니다 이 스크립트가 라이브러리로 가져 오기 때문에 main()을 실행하면 건너 뜁니다.

문제는 zsh의 $0은 bash의 $BASH_SOURCE처럼 동작하며, 보완을 위해 bash의 $0 (다른 방식으로 작동하는)과 동일한 zsh가 있다고 생각하지 않습니다.

답변

1

zsh_eval_context의 마지막 요소 값을 확인하십시오. "최상위"와 같으면 $BASH_SOURCE == $0 검사가 참인 것과 동일해야합니다.

if [[ $zsh_eval_context[-1] == toplevel ]]; then 
    main 
fi 
+0

감사합니다. 내 컴퓨터에서 완벽하게 작동합니다! – mcandre

관련 문제