sudo를 통해 얻은 스크립트에 표시되도록 변수 내보내기

sudo를 통해 얻은 스크립트에 표시되도록 변수 내보내기

이 스크립트 에 sudo. 그런 다음 다른 스크립트를 가져오지만 해당 스크립트는 스크립트를 가져오면 일반 사용자에게 반환됩니다 .

commands.shsudocommands.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

관련 정보