입력:
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'
''
따옴표는 리터럴이며, ""
따옴표는 변수 확장을 허용합니다. 나는 둘 다 사용하여 함께 연결했습니다. .""