간단한 bash 스크립트가 작동하지 않습니다

간단한 bash 스크립트가 작동하지 않습니다

저는 bash 스크립팅을 처음 접했습니다. http_proxy 변수를 내보내는 스크립트를 만들려고 합니다. 이것이 터미널에서 수행하는 작업입니다.

$export http_proxy=http://proxy21.iitd.ernet.in:3128/
$export https_proxy=https://proxy21.iitd.ernet.in:3128/

이것은 잘 작동합니다. 이제 내 스크립트(setproxy라고 함)는 다음과 같습니다.

#!/usr/bin/env bash
if [ $1 -eq 22 ]
then
    export http_proxy=http://proxy22.iitd.ernet.in:3128/
    export https_proxy=https://proxy22.iitd.ernet.in:3128/
elif [ $1 -eq 21 ]
then
    export http_proxy=http://proxy21.iitd.ernet.in:3128/
    export https_proxy=https://proxy21.iitd.ernet.in:3128/
elif [ $1 -eq 61 ]
then
    export http_proxy=http://proxy61.iitd.ernet.in:3128/
    export https_proxy=https://proxy61.iitd.ernet.in:3128/
elif [ $1 -eq 62 ]
then
    export http_proxy=http://proxy62.iitd.ernet.in:3128/
    export https_proxy=https://proxy62.iitd.ernet.in:3128/
fi

기본적으로 입력에 따라 적절한 프록시 서버를 설정하고 싶습니다. bin 폴더에 넣고 실행 가능하게 만들고 경로에 bin을 추가하고 로그인 및 로그 아웃했습니다. 터미널은 setproxy를 유효한 명령으로 받아들입니다(적어도 명령을 찾을 수 없음 오류가 없습니다). 하지만 그렇게 하면:

$setproxy 22

효과가 없습니다. 프록시는 변경되지 않은 상태로 유지됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변1

스크립트를 호출하면 이를 실행하기 위해 새 하위 셸이 호출됩니다. 해당 프록시가 설정되어 있지만 상위 프로세스(쉘)의 프록시는 하위 프로세스에서 변경할 수 없습니다. 노력하다소싱스크립트, 즉 다음과 같이 호출합니다.

. setproxy 21

그런 다음 스크립트는 현재 쉘에서 해석됩니다.

관련 정보