sudo 옵션 없음

sudo 옵션 없음

다른 쉘 스크립트에서 사용될 변수에 저장될 "읽기"를 사용하여 일부 데이터를 입력하도록 사용자에게 요청하고 있습니다. 그러나 어떤 이유로 작동하지 않습니다.

이것이 내가 쉘에서 얻는 것입니다script1.sh

#!/bin/bash
read -p "Enter Your Full Name: " Name
export Name
sudo bash script2.sh

script2.sh

#!/bin/bash
echo $Name

내 이해는 sudo bash script1.sh를 실행하면 입력을 가져와 변수에 넣은 다음 내보내기를 사용하여 다른 스크립트로 내보낼 수 있다는 것입니다.

그런데 저는 Bash 버전 4.3.11을 사용하고 있습니다.

누구든지 내가 뭘 잘못하고 있는지 설명할 수 있나요? 내 목표는 사용자에게 전체 이름을 물어보고 다른 스크립트에서 전체 이름을 사용하는 것입니다.

답변1

sudo 옵션 없음

source 명령을 사용하여 원래 환경과 동일한 환경에서 다른 bash 스크립트를 실행할 수 있습니다. (자식 프로세스를 시작하지 마십시오)

script1.sh

#!/bin/bash
read -p "Enter Your Full Name: " Name
source script2.sh

script2.sh

#!/bin/bash
echo $Name

--

Sudo와 함께

귀하의 예가 작동하지 않는 이유는 sudo 때문입니다. Sudo -E 옵션을 사용하여 수퍼유저 환경에 대한 환경 변수를 보존할 수 있습니다.

script1.sh

   #!/bin/bash
   read -p "Enter Your Full Name: " Name
   export Name 
   sudo -E bash script2.sh

script2.sh

#!/bin/bash
echo $Name

관련 정보