Aporte:
sudo bash -c '>> /media/$USER/rootfs/etc/profile'
Producción:
bash: /media/root/rootfs/etc/profile: No such file or directory
Aporte:
TEST=$USER
sudo bash -c '>> /media/$TEST/rootfs/etc/profile'
Producción:
bash: /media//rootfs/etc/profile: No such file or directory
En lugar de:
/media/riccardo/rootfs/etc/profile
¿Cómo puedo solucionar el problema?
Respuesta1
Las variables del Shell no se exportan a comandos iniciados desde el Shell de forma predeterminada.
Debes hacerlo explícitamente con export
, por ejemplo:
$ export test=foo
$ bash -c 'echo test=$test'
test=foo
Excepto que sudo
aún puede limpiar el entorno antes de pasarlo a bash
, por lo que es posible que deba usar los argumentos de la línea de comando en su lugar:
$ test=foobar
$ sudo bash -c 'echo "$1"' sudo_bash "$test"
foobar
No es necesario hacerlo export
aquí, y sudo_bash
es solo una cadena que se usa como "nombre" de ese shell interno; lo vería si la -c
cadena tuviera, por ejemplo, un error de sintaxis.
Ver también:
Respuesta2
Problemas de cotización
sudo bash -c '>> /media/'"$USER"'/rootfs/etc/profile'
test=$USER
sudo bash -c '>> /media/'"$test"'/rootfs/etc/profile'
''
las comillas son literales y ""
permiten la expansión de variables. He usado ambos, concatenándolos juntos. También funcionaría si solo usara ""
.