![스크립트 내에서 변수를 내보낼 수 없습니다.](https://linux55.com/image/195479/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EB%82%B4%EC%97%90%EC%84%9C%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EB%82%B4%EB%B3%B4%EB%82%BC%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
설명서에 따라 borg 자동 백업 스크립트를 설정하려고 했습니다. 어떤 이유로 sudo로 보호된 암호화된 드라이브에 쓰려고 하면 스크립트에서 해당 변수를 볼 수 없습니다.
예를 들어, 스크립트가 나에게 비밀번호를 다시 묻지 않기 때문에 이와 같은 것이 스크립트로 작동할 수 있습니다.
#!/bin/sh
DATE=$(date --iso-8601)-$(hostname)
TARGET=~/Documents/borg
export BORG_PASSPHRASE="whatever"
borg init --encryption=repokey $TARGET
borg create $TARGET::$DATE-$$ ~/Desktop/TestFolder/1
그러나 외부 FDE 구현으로 드라이브를 마운트하면 내보낸 비밀번호와 이상한 "리포키" 암호화 모드가 무시됩니다.
#!/bin/sh
DATE=$(date --iso-8601)-$(hostname)
TARGET=~/X/borg
export BORG_PASSPHRASE="whatever"
sudo borg init --encryption=repokey $TARGET
sudo borg create $BORG_OPTS $TARGET::$DATE-$$ ~/Desktop/TestFolder/1
나는 Linux를 처음 접했기 때문에 이것은 간단한 수정일지도 모르지만 다른 답변을 참조하면 스스로 할 수 없습니다. 도와주세요.
답변1
sudo는 환경 변수를 보존하지 않습니다 -E
. 해당 옵션을 사용해 보세요. 바라보다man 8 sudo
-E' -E(환경 보존) 옵션은 사용자가 기존 환경 변수를 보존하기를 원하는 보안 정책을 나타냅니다. -E 옵션을 지정한 경우 사용자에게 환경을 보존할 수 있는 권한이 없으면 보안 정책에서 오류가 반환될 수 있습니다.