Bash 스크립트에서 경로 변수를 사용하여 CD를 실행하면 작동하지 않습니다.

Bash 스크립트에서 경로 변수를 사용하여 CD를 실행하면 작동하지 않습니다.

스크립트를 실행할 때:

#!/bin/bash
DRUPAL_ROOT=$(drush status root --format=list)
if [ -z $DRUPAL_ROOT ]
then
  echo -e "Not exists Drupal core"
else
  echo $DRUPAL_ROOT
  cd $DRUPAL_ROOT
fi

산출:

# /right/drupal/root

하지만 길은 변하지 않았다

터미널에서 명령을 실행하면:

# DRUPAL_ROOT=$(drush status root --format=list)
# cd $DRUPAL_ROOT

변경 확인

어떤 아이디어가 있나요? 감사해요.

답변1

주석에서 언급했듯이 스크립트는 서브쉘에서 실행되므로 디렉토리는 변경되지 않습니다. .스크립트를 사용 하거나 가져오거나 source이를 위한 함수를 만들 수 있습니다.

drup_cd() {
   DRUPAL_ROOT=$(drush status root --format=list)
   if [[ ! $DRUPAL_ROOT ]]; then
     echo -e "Not exists Drupal core"
   else
     echo "$DRUPAL_ROOT"
     cd "$DRUPAL_ROOT"
   fi
}

.bashrc예를 들어, 귀하의 계정에 추가할 수 있습니다. 또한 내부적으로 따옴표가 없는 변수를 사용하면 [ ]오류가 발생하기 쉽습니다.

관련 정보