2017-05-23 4 views
0

3 개의 다른 디렉토리에 3 개의 sh 스크립트가 있습니다.환경을 변경하지 않고 쉘 스크립트를 실행합니다.

각 디렉토리에 들어가서 각 스크립트를 실행하는 대신 위의 슈퍼 폴더에있는 하나의 중앙 스크립트에서 3 개의 스크립트를 모두 트리거하려고했습니다.

나는 /bin/bash /path/to/script를 사용하여 시도하지만 위치에서 일하기로이

따라서 내가 실행 전에 cd folder1 먼저 각 폴더에가는 시도했다. superfolder 위치를 가정 할 것이지만, 그 중 하나가 작동하지 않을 것입니다.

난 그냥

+0

*'cd folder1'을 (를) 사용하여 정확히 무엇이 작동하지 않았습니까? 자식 스크립트를 수동으로 시작하기 전에 상위 스크립트에서 명령을 실행하고 대화 형 쉘에서 폴더로 변경하는 것 사이에는 별다른 차이가 없습니다. 단, 내장 된'cd' 명령에 별칭이나 래퍼가 없으면됩니다. – chepner

답변

1

다음 시도하십시오 로컬 환경을 변경하지 않고 그 3 스크립트를 실행하려면 : (가) 저장/당신이 스크립트 현재 디렉토리를 마스터 복원하는 데 필요한 것을

(cd dir1; ./script1) 
(cd dir2; ./script2) 
(cd dir3; ./script3) 

참고. 하위 쉘을 사용

+1

추가 프로세스를 생성 할 필요가 없습니다. 당신은'cd dir1; ./script1; cd -'등 – user1934428

+0

물론, 그 또 다른 옵션이 될 것입니다 ... –

0

, 서브 쉘 때 현재 쉘이

(cd path ; ./script) 
0

이 원래 그랬던 것처럼 자신의 전체 또는 상대 경로로 스크립트를 실행하는 것입니다 수행하는 * 괜찬아 방법을 변경되지 않습니다 종료 . 스크립트는 원래 사용자가 무엇이든지간에 PWD이 무엇이든 똑같이해야합니다. 이 실제로 인 경우 이웃 파일을 소싱하는 것과 같은 이유로 the working directory of the script을 알아야합니다. 약간의 복잡성이 추가되고 고대 배시 버전에서는 작동하지 않을 수 있습니다.