2013-03-08 4 views
0

최대 세 개의 인수를 전달할 수있는이 bash 스크립트가 있습니다. 그것은 마치 디렉토리 ./script -h에서 호출 할 때 매력처럼 작동하지만 동일한 파일을/bin에 복사하고 어디서나 script -h으로 호출하면 전달 된 인수를 무시하는 것 같습니다.Bash 스크립트는/bin에있는 인수를 무시합니다.

왜? 또는 더 중요하게 : 나는 그것을 어떻게 바꿀 수 있습니까?

+0

스크립트 첫 줄에서 bash를 실행 하시겠습니까? #!/usr/bin/bash –

+2

또한 올바른 스크립트를 호출하는 경우'which script'를 실행하십시오. – user000001

+0

첫 번째 줄은 맞지만 user000001은 해결책이 있습니다! 어떤 명령을 사용했는데/usr/bin에 파일의 복사본이 남아있는 것으로 나타났습니다. 이것이 호출되었고/bin에있는 새로운 사본은 무시되었습니다. 이전 버전을 삭제 한 후에는 이제 모두 정상적으로 작동합니다. 고맙습니다! – fortranondebian

답변

2

script은 현재 세션의 복사본을 취하는 매우 유용한 표준 유틸리티 프로그램입니다 (typescript이라는 파일 찾기). 그것은 또 다른 쉘 인터페이스를 생성하기 때문에, 당신은 아마도 그것이 실행되고 있다는 것을 알지 못했을 것입니다.

새 프로그램을 작성할 때는 script.sh과 같은 명명 규칙을 사용하십시오.

편집 :

당신은 (너무 많은 윈도우처럼 보이기 때문에) 후 미세 파일 접미사를 사용하여 좋아하지만, 기존의 명령과 충돌하지 않는 스크립트의 이름을 보장 다른 명명 규칙을 사용하지 않는 경우 . 예를 들어, test은 또 다른 즐겨 찾기입니다. type을 사용하여 명령을 검사 할 수 있지만 현재 환경 만 검사하면 다른 사용자 이름에서 실행 중일 때 이름 충돌이 발생할 수 있습니다.

+0

어떻게 대답입니까? 왜 그랬을까요? 바람둥이 아니야. –

+0

그것은'(/ bin /에있는) 사용자의 스크립트가 아닌'called'스크립트 ('/ usr/bin'에있는)가 호출 되었기 때문에 대답입니다. – robertklep

+0

나에게 답을주는 것처럼 들립니다. 'script'는 이미 리눅스 명령이므로 OP는 아마도 실제 스크립트 대신에 내장 명령어를 얻고있을 것입니다. –

관련 문제