스크립트를 소싱하고 실행하는 유일한 차이점은 나중에 부모 환경이 영향을받지 않는다는 것을 알고있었습니다.스크립트를 소싱하고 KornShell에서 실행하는 동안의 동작 차이점
이 샘플 스크립트를 고려는
SETUP_DIR=`dirname $0`
echo $SETUP_DIR
echo $0
echo $1
위의 스크립트는 단순히 실행중인 스크립트의 디렉토리 이름을 가져옵니다. 그것을 소스하는 동안, 위의 스크립트는 다음 오류와 함께 실패
$ . test.sh foo
dirname: invalid option -- k
Try `dirname --help' for more information.
-ksh
foo
는 스크립트가 부모의 환경 쉘에서 실행되는, 쉘의 이름으로 전달되는, 그것을 소싱 날 때입니다에 보이는 이유 첫 번째 인수는이 경우 -ksh
입니다.
- 그래서 궁금
sh 또는 bash는 에서 실행하는 동안$ sh sh-3.2$ . test.sh foo . sh foo sh-3.2$ bash bash-3.2$ . test.sh foo . bash foo bash-3.2$
및
이상하게dirname -ksh
때문에dirname
에 대한 잘못된 옵션 인
-k
, 실패,이 문제가되지 않습니다, KornShell (ksh)에서 잘 알려진 동작입니까? 이 문제를 해결하는 방법은 무엇입니까? 하지dirname 'sh'
이man dirname
에서, 두 번째 질문에 현재 디렉토리에게 대답에서.
내가 재현 할 수 있습니다 이후 너의 오류. 'dirname -ksh'이 효과가 있습니까? 'dirname'이주는 것은 무엇입니까? – dogbane
@dogbane :'dirname -ksh'이 작동하지 않고 내 질문에서 언급 한대로 실패합니다. 기타 관련 정보 질문 자체에서 업데이트했습니다. – Abhijit