Аргумент функции не передается базовой оболочке. Можно заменить аргументом в строке это su
будет передавать корневой оболочке, но остерегаться этого, строка будет проанализирована полностью оболочка, таким образом, специальные символы в ней будут расширены. Для предотвращения этого дополнительного расширения (который мог заставить произвольный код выполняться как корень) интерполируйте строку между одинарными кавычками (который вызывает все символы кроме '
интерпретироваться буквально) и защищать символы одинарных кавычек в строке ('\''
завершает строковый литерал, добавляет одинарную кавычку и запускает новый литерал, что означает это '\''
эффективно способ поместить одинарную кавычку в литерале, разграниченном одинарными кавычками).
new_use() {
su -c "echo '${1//\'/\'\\\'\'}' >> /etc/portage/package.use"
}
Другой возможный подход должен использовать tee
.
Можно попытаться установить Debian через VM (Виртуальная машина), которая использовала бы ISO в виртуальном CD-приводе и использовании целевого раздела как его устройство хранения данных. Virtualbox может работать.
Если просто необходимо загрузиться на живом CD, даже не беспокойтесь частью устройства хранения данных.
Иначе, если у Вас есть доступный раздел, можно даже попытаться использовать, как будто это была флеш-карта для начальной загрузки на нем:
dd if=your.iso of=/dev/sdaX bs=1M
Затем выполнение update-grub
может обновить меню начальной загрузки GRUB так, чтобы можно было выбрать ISO для начальной загрузки на том, когда Вы перезапустите свой компьютер. Иначе можно попробовать к chainload его от конфигурационного файла личинки.