![sudo 옵션 없음](https://linux55.com/image/60082/sudo%20%EC%98%B5%EC%85%98%20%EC%97%86%EC%9D%8C.png)
다른 쉘 스크립트에서 사용될 변수에 저장될 "읽기"를 사용하여 일부 데이터를 입력하도록 사용자에게 요청하고 있습니다. 그러나 어떤 이유로 작동하지 않습니다.
이것이 내가 쉘에서 얻는 것입니다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