programing

Bash가 다른 디렉토리 컨텍스트에서 명령을 실행하려면 어떻게 해야 합니까?

yellowcard 2023. 4. 15. 08:41
반응형

Bash가 다른 디렉토리 컨텍스트에서 명령을 실행하려면 어떻게 해야 합니까?

특정 디렉토리 내에서 호출되는 공통 명령어가 있습니다.이 프로그램의 /bin에 있는 실행 파일은 1개뿐이며, 현재 작업 디렉토리는 이 프로그램을 올바르게 실행하기 위해 매우 중요합니다.스크립트는 스크립트가 실행되는 디렉토리 내에 있는 파일에 영향을 줍니다.

또, 커스텀 셸 스크립트는 1개의 디렉토리에서 몇개의 작업을 실시합니다만, 상기의 커스텀 셸 스크립트는 다른 디렉토리에 있는 것처럼 호출할 필요가 있습니다.

셸 스크립트로 이 작업을 수행하려면 어떻게 해야 합니까?

사용하다cd즉, 이러한 종류의 서브셸을 사용하는 간단한 방법은 괄호입니다.

(cd wherever; mycommand ...)

즉, 커맨드에 필요한 환경이 있는 경우, 그 커맨드를 사용하는 것에 부담을 주는 것이 아니라, 환경 자체를 확실히 할 필요가 있습니다(확실히 정의된 대규모 시스템의 컨텍스트에서 매우 특정 환경에서 사용되는 내부 커맨드가 아닌 경우).발신자가 이미 필요한 환경을 확보해야 합니다).보통 이것은 일종의 셸 스크립트 래퍼입니다.

(cd /path/to/your/special/place;/bin/your-special-command ARGS)

를 사용할 수 있습니다.cd내장 또는pushd그리고.popd이 목적을 위해 내장되어 있습니다.예를 들어 다음과 같습니다.

# do something with /etc as the working directory
cd /etc
:

# do something with /tmp as the working directory
cd /tmp
:

빌트인은 다른 명령어와 마찬가지로 사용할 수 있습니다.또, 디렉토리 콘텍스트는 스크립트에서 원하는 횟수만큼 변경할 수 있습니다.

현재 작업 디렉토리로 돌아가려면 다음 절차를 따릅니다.

current_dir=$PWD;cd /path/to/your/command/dir;special command ARGS;cd $current_dir;
  1. 변수를 설정하고 있습니다.current_dir동등한pwd
  2. 그 후 우리는 할 것이다.cd명령어를 실행할 곳으로 이동합니다.
  3. 명령어를 실행하고 있습니다.
  4. 그러면 저희가cd우리의 변수로 돌아가서current_dir

또는

pushd && cd /path/to/your/command/dir && special command ARGS && popd

@ape of bart 및 @Constantin 제공

유용한 정보입니다.

이렇게 하면 셸 디렉토리가 다음과 같이 변경됩니다.~/project

function mymake() {
    cd ~/project && make $1
}

이거 안 돼

function mymake() {
    (cd ~/project && make $1)
}

달리다

mymake something

언급URL : https://stackoverflow.com/questions/10566532/how-can-bash-execute-a-command-in-a-different-directory-context

반응형