스크립트에서 실행할 때 환경 유지

스크립트에서 실행할 때 환경 유지

여러 명령을 실행해야 하는 bash 스크립트가 있습니다. 터미널에 입력하면 명령이 제대로 작동하지만 스크립트 내부에서 명령을 실행하려고 하면 작동하지 않으므로 환경에 특정한 명령이라고 가정합니다.

내가 가지고 있는 스크립트에는

exec "$cmd"

작동하지 않지만 $cmd의 내용을 복사하여 터미널에 붙여 넣으면 제대로 작동합니다.

스크립트를 실행할 때 현재 환경을 어떻게 유지합니까? 아니면 그것이 무엇인지 다른 생각이 있나요?

답변1

대신 명령을 배열에 넣으십시오.

arr=(foo bar baz quux)
exec "${arr[@]}"

답변2

set -o allexportBash 스크립트 상단에 입력하세요 . 그러면 정의한 모든 변수가 자동으로 내보내집니다. (이것은 나쁜 스타일로 간주됩니다. 더 좋은 방법은 적절한 변수를 내보내는 것입니다.)

답변3

모든 명령을 동일한 디렉토리에서 실행해야 하는 경우 다음을 사용할 수 있습니다.

cd /d $Location

스크립트 시작 부분에 실행할 명령의 위치를 ​​설정합니다.

cd - 디렉토리 변경 명령입니다. /d - 이 스위치는 CD가 드라이브와 디렉터리를 동시에 변경하도록 합니다.

/d 없이 D:\scripts에서 명령을 실행하려면 다음을 수행해야 합니다.

D:
cd \scripts

하지만 위의 명령을 사용하면 한 줄로 할 수 있습니다

cd /d D:\scripts

-다시 수정-

죄송합니다. 분명히 BASH라고 적혀 있지만 어떤 이유로 BATCH에서 읽었습니다. 앞으로는 더 조심하겠습니다.

관련 정보