이 스크립트 에 sudo
. 그런 다음 다른 스크립트를 가져오지만 해당 스크립트는 스크립트를 가져오면 일반 사용자에게 반환됩니다 .commands.sh
sudo
commands.sh
문서:main.sh
#!/bin/bash
user=ubuntu
export $user
sudo -u $user bash -c "source includes-shared/commands.sh"
문서:includes-shared/commands.sh
# debug command to see if $user is available
printenv
[ more commands...]
변수는 $user
더 이상 이 commands.sh
스크립트에 표시되지 않습니다. 즉, printenv
다른 명령에 표시되지 않습니다. 소스 스크립트에서 사용할 수 있도록
내보내려면 어떻게 해야 합니까 ?$user
답변1
변수 이름에 대해 내보내기를 실행해야 합니다. 이제 내보내기에서 보기 전에 변수가 참조되고 대체됩니다.
다음과 같이 변경하세요.
export user
부족함을 참고하세요$
현재 버전은 기본적으로 다음과 같습니다.
export ubuntu
$user
먼저 설명하기 때문입니다 .
sudo를 사용하면 환경 변수도 손실됩니다. 저장하는 방법에는 두 가지가 있습니다. 전체 환경을 유지하거나
sudo -E -u $user command
아니면 필요한 변수만 유지하세요.
sudo user=$user -u $user command