(Bash) 쉘 스크립트에서 사용하면 CD $Variable이 작동하지 않습니다.

(Bash) 쉘 스크립트에서 사용하면 CD $Variable이 작동하지 않습니다.

파일명 : test.sh

#!/bin/bash

ZDir="$(echo /usr/src)"
cd "$ZDir"

스크립트를 실행하면 ./Test.sh명령이 cd아무 작업도 수행하지 않습니다. bash 터미널에서 직접 이 작업을 수행하려고 하면 매력처럼 작동합니다. 또한 스크립트 내부와 외부 모두에서 사용되는 에코는 올바른 값( /usr/src)을 반환합니다.

왜 이런 일이 일어나는지 아는 사람이 있나요? 다시 말하지만, cd $ZDir이는 스크립트 외부의 터미널에서 직접 사용하면 작동합니다...

편집: "중복된" 답변을 찾을 수 없었지만 G-Man 사용자가 제가 해야 할 일에 대해 정확하게 답변해 주었습니다. &&를 포함하고 실행해야 하는 다음 명령을 입력하면 작동합니다. 이를 위해 함수를 사용할 수도 있습니다... cdZDir() { cd /usr/src;make;install }

그런 다음 함수를 직접 호출하면 됩니다.

답변1

cd영향을 미친다현재의쉘과 그 자손. 쉘 스크립트는 새로운 쉘 프로세스에서 실행되므로 cd스크립트의 a는 스크립트 실행의 나머지 부분과 실행되는 모든 프로그램에만 영향을 미칩니다.

  • pwd와 같은 명령어를 입력하면ls 스크립트를 입력하고,그 후에 는 성공 cd했음을 알 수 있습니다.cd스크립트에서.
  • 라고 말하면 . ./Test.sh현재 (주) 쉘 프로세스가 Test.sh 그 안에 있는 명령을 읽고 실행합니다. 그러면 현재(주) 쉘 프로세스가 새 디렉토리에 위치하게 되는 것을 볼 수 있습니다.

관련 정보