Bash 스크립트에서 CD를 사용하고 "git checkout"을 실행하고 싶습니다.

Bash 스크립트에서 CD를 사용하고 "git checkout"을 실행하고 싶습니다.

명령줄에서 실행할 수 있는 파일을 만들려고 합니다.

.bashrc

export gorepo="cd /home/pol/dcu/practicum/gitrep"

그리고

alias gorepo="/home/pol/dcu/practicum/gitrep"

그런 다음 $PATH의 실행 파일에서

#!/bin/bash
gorepo # gorepo is defined in .bashrc
git checkout

내보내기, 별칭 지정, 쉘 변수 및 bash 함수 사용 등 다양한 조합을 시도했지만 소용이 없었습니다. 도저히 할 수 없습니다!

내 저장소에 간단히 CD를 넣은 다음 git checkout을 실행하고 저장소 디렉터리의 셸로 돌아가는 명령을 어떻게 만들 수 있나요?

답변1

gorepo이는 리터럴 텍스트를 포함하는 변수를 선언합니다 cd /home/pol/dcu/practicum/gitrep.

export gorepo="cd /home/pol/dcu/practicum/gitrep"

gorepo이는 프로그램을 실행하기 위한 명령(별명)을 선언합니다 /home/pol/dcu/practicum/gitrep.

alias gorepo="/home/pol/dcu/practicum/gitrep"

이는 쉘 스크립트 컨텍스트에 정의되지 않은 별칭을 사용하려고 시도합니다.

#!/bin/bash
gorepo # gorepo is defined in .bashrc
git checkout

내 생각에 당신이 원하는 것은 디렉토리를 변경하는 이 프로그램인 것 같습니다.스크립트 실행 중코드를 확인하세요.

#!/bin/bash
cd /home/pol/dcu/practicum/gitrep
git checkout

.bashrc또는 현재 쉘 컨텍스트에서 디렉토리를 변경하고 코드를 확인하는 별칭(for ):

alias gorepo='cd /home/pol/dcu/practicum/gitrep && git checkout'

답변2

정의 cd: 현재 쉘의 작업 디렉토리를 변경합니다. 스크립트를 시작하면 해당 스크립트를 실행하기 위해 또 다른 쉘(프로세스)이 시작됩니다.저것셸 프로세스는 를 실행하는 동안 작업 디렉터리를 성공적으로 변경했지만 cd스크립트가 끝나면 스크립트를 시작한 이전 셸로 돌아갑니다.

이 문제에 대한 해결책은 다음과 같습니다.

1) 다음 방법 중 하나를 사용하여 "구매"를 통해 스크립트를 실행합니다.

bash$ source yourscript

또는 (정확히 동일):

bash$ . yourscript

그러면 현재 셸에서 스크립트가 실행되어 cd프로세스의 디렉터리가 변경되어 스크립트가 끝날 때까지 유지됩니다.

2) 별칭을 정의합니다. Alias ​​명령은 현재 쉘 프로세스 내에서도 실행됩니다. 이를 수행하는 방법에 대한 roaima의 답변을 참조하십시오.

답변3

이것이 당신이 정말로 원하는 것인지, 아니면 이것이 당신이 하려는 일에 대한 최선의 해결책이라고 생각하는지 모르겠습니다.

자식은-C <repopath> <command> <branch>

관광의 경우

git -C /home/pol/dcu/practicum/gitrep checkout master`

이렇게 하면 원하는 디렉토리로 돌아갈 수는 없지만 도움이 될 수 있습니다.

관련 정보