2017-04-05 1 views
0

제목에서 알 수 있듯이, 정말 긴 경로 이름으로 실행 파일을 시작하는 스크립트가 있습니다. 실제로 스크립트가 변경되지는 않았지만 테스트 할 수 있어야합니다. 나는 기본적으로 같은 것을 할 할 :긴 경로 이름으로 실행 파일을 실행하는 스크립트가 있습니다. 스크립트를 테스트 할 수 있도록이 실행 파일을 스텁 (stub)하고 싶습니다.

alias /some/really/long/path/name/for/this/executable/run.sh='/usr/bin/echo'

그러나 별칭 이름에 /이 늘 작동합니다.

어떻게 스크립트를 정상적으로 실행할 수 있습니까? "stub"또는 "mock"은 한 줄입니까? 문제가있는 라인은 함수에 있으므로 아무 문제없이 source 스크립트를 사용할 수 있습니다. 임씨는 일단 내가 한 번 먹었 으면 어떻게해야할지 확신하지 못한다.

아이디어가 있으십니까?

답변

1

먼저 sed를 통해 스크립트를 실행하여 run.sh를 원하는 것으로 바꾸고 sed 출력을 원본 대신 테스트로 실행할 수 있습니다. 그렇지 않으면 100 % 동일해야합니다.

+0

이것은 정확히 내가 필요한 것입니다. 잘 했어. – R4F6

0

cannot export aliases to scripts.

$ mkdir replacement 
$ ln -s /usr/bin/echo replacement/run.sh 
$ sudo mount --bind replacement /some/really/long/path/name/for/this/executable/ 

바인드는 심볼릭 링크와 유사한 또 하나있는 디렉토리를 대체하지만, 원래의 디렉토리

를 사용하여 대체를 마운트 해제 후 변경되지 않습니다 : 당신이 루트 권한이있는 경우, 당신은 대신 바인딩을 만들 수 있습니다
$ sudo umount /some/really/long/path/name/for/this/executable/ 

어느 쪽이든 두 스크립트를 모두 홈 디렉토리에 복사하고 로컬로 수정하지 않으시겠습니까?

관련 문제