입력하다:
sudo bash -c '>> /media/$USER/rootfs/etc/profile'
산출:
bash: /media/root/rootfs/etc/profile: No such file or directory
입력하다:
TEST=$USER
sudo bash -c '>> /media/$TEST/rootfs/etc/profile'
산출:
bash: /media//rootfs/etc/profile: No such file or directory
바꾸다:
/media/riccardo/rootfs/etc/profile
이 문제를 어떻게 해결할 수 있나요?
답변1
기본적으로 셸 변수는 셸에서 실행된 명령으로 내보내지지 않습니다.
다음을 사용하여 명시적으로 이 작업을 수행해야 합니다 export
.
$ export test=foo
$ bash -c 'echo test=$test'
test=foo
sudo
에 전달하기 전에 환경을 정리하는 것이 여전히 가능하므로 명령 bash
줄 인수를 사용해야 할 수도 있습니다.
$ test=foobar
$ sudo bash -c 'echo "$1"' sudo_bash "$test"
foobar
여기서는 필요하지 않습니다 export
. 이는 sudo_bash
내부 쉘의 "이름"으로 사용되는 문자열일 뿐이며, -c
해당 문자열에 구문 오류가 있으면 이를 볼 수 있습니다.
또한보십시오:
답변2
인용 문제
sudo bash -c '>> /media/'"$USER"'/rootfs/etc/profile'
test=$USER
sudo bash -c '>> /media/'"$test"'/rootfs/etc/profile'
''
따옴표는 리터럴 ""
이며 따옴표를 사용하면 변수 확장이 가능합니다. 저는 둘 다 연결해서 사용해봤습니다. 그냥 사용해도 작동합니다 ""
.