2017-03-06 1 views
0

젠킨스 파이프 라인 스크립트가 있습니다. 그것은 내앨리어싱이 아무런 영향을주지 않습니다.

이 작동 :

sh("/my/path/to/git status") 

을하지만, 내가 시도하는 경우 :

sh("alias git='/my/path/to/git' && git status") 

또는

sh("alias git='/my/path/to/git'") 
sh("git status") 

다음은 작동하지 않습니다 script.sh: line 2: git: command not found

I을 싶습니다 코드의 두 번째와 세 번째 부분도 잘 작동하게하십시오. 어떻게해야합니까?

답변

1

연속적인 sh 호출이 상태 (환경 변수 포함)를 유지한다는 것은 허용되지 않습니다.

sh """ 
    alias git='/my/path/to/git' 
    git status 
""" 
:

하나, 그 또는 사용을 프로젝트에 스크립트를 작성하고 하나의 sh 명령에 전화

1

이 라인

sh("alias git='/my/path/to/git'") 
sh("git status") 

서브 쉘을 만들 수 있습니다. 첫 번째가 별칭을 만든 다음 즉시 종료합니다. 두 번째 명령은 이전 쉘 또는 별명을 모른 채 시작합니다.

&&;로 대체해도

sh("alias git='/my/path/to/git' && git status") 

중 하나를 로컬 대화 형 쉘에서 작동하지 않는 이전 버전 - 명확 별칭은 단순히 현재의 명령 목록이 끝날 때까지 적용되지 않습니다 .

별칭을 사용해야하는 경우 셸을 시작할 때 보조 파일 (.bashrc, .profile 등)이 소스 파일에 추가되어야합니다. 그러나 별칭은 어쨌든 shopt -s expand_aliases이 아닌 한 비대화 형 쉘에서 확장 될 수 없습니다.

그렇지 않으면 일반적인 해결책은 $PATH/my/path/to을 추가하는 것입니다.

관련 문제