Скрипты на Bash, смена каталога после выполнения скрипта

Компьютеры программирование Linux bash скрипты

Сразу предупреждаю, скриптингом раньше не занимался

Проблем в следующем, написал небольшой скрипт для монтирования разделов, для экспериментов с другими дистрибутивами(в данный момент Gentoo), хочется чтобы после его выполнения в консоли менялся каталог на необходимый. Так же интересует реализация запуска chroot после скрипта. И наконец для полной удовлетворенности возможность запустить его от своего пользователя с автоматическим переходом на root'a и предоставлением chroot'ной среды.

дистриб kubuntu 11.10

Примечание:
Steven, я тоже так думал, но это не работает. Насколько я понимаю он меняет каталог внутри скрипта для остальных команд в нем, а консоли это без разницы.

Примечание:
Нашел метод как это сделать, но не уверен что это правильно

cd /mnt/gentoo/
bash

Примечание:
ну да я тоже так решил, но по chroot'у есть еще другой вопрос а если я хочу уже в chroot'e ввести пару команд возможно ли их поместить в этот скрипт?

# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile

Примечание:
огромное спасибо. Касательно chroot'a: перед его запуском я монтирую /dev и /proc внутрь

# mount -t proc none /mnt/gentoo/proc
# mount --rbind /dev /mnt/gentoo/dev

а дальше chroot как я писал выше, и уже в chroot'e необходимо ввести 2 последние команды:

# env-update
# source /etc/profile

Это возможно?

Примечание:
хочу получить доступ к gentoo и уже внутри собирать ядро для нее. Я ее только решил поставить, ядра в ней пока нет

Примечание:
с chroot'oм проблем нет, в стандартном случаи когда все команды прописываю вручную все очень просто:

# mount /dev/sda6 /mnt/gentoo //раздел с базовыми инструментами linux и gentoo

далее прикручиваю /dev и /proc в него и chroot
# chroot /mnt/gentoo /bin/bash

а уже в chroot'e ввожу 2 последние команды:
# env-update
>> Regenerating /etc/ld.so.cache...
# source /etc/profile

собственно env-update - автоматическое обновление настроек окружения в gentoo, после chroot'a запускается без каких либо дополнительных усилий. А после мы можем без проблем дальше колупаться с gentoo.

Но вопрос то состоял немного в другом, как автоматизировать весь этот процесс, возможноли при вызове chroot'a указать ему запустить эти две команды, притом # source /etc/profile только после завершения первой

Примечание:
после того как выполнена команда chroot загружается новая оболочка как я понимаю, в этой оболочке я хочу запустить еще 2 команды, возможно ли это реализовать в скрипте, или же chroot'у передать параметр для запуска этих команд(или скрипта со списком этих команд)?

Идея в том что бы облегчить рутинный ввод команд для перехода к базовой сборке gentoo и запустив скрипт сразу перейти к работе с ней. Описанное ранее существенно облегчает, но хотелось бы довести до полной автоматизации данного процесса.

сама проблема написания скрипта возникла из-за отсутствия уймы свободного времени для настройки системы и сборки ядра(что бы сделать ее полностью самостоятельным дистрибом, пускай и без GUI) и копаться уже с ним. Так же комп используют и остальные члены моей семьи которые без игрушек никак, и постоянные перезагрузки системы, с последующим постоянным выполнением одних и тех же команд.
В дальнейшем после успешной сборки gentoo планирую калупаться с LFS дистрибом, а там без песочницы совсем никак.

Примечание:
соответственно chroot с веденными 2мя командами я хочу получить в консоли для дальнейшей работы с gentoo
Ответы:
ну так с первым все просто:
можно в скрипте написать bash -i
выход по Ctrl+D
- - -
наверное аналогично и с chroot
Насчёт перехода в другой директорий внутри скрипта... Если просто написать внутрь скрипта переход в другой директорий, например назвав его script.sh
Вообще для монтирования других дистров, запуска программ внутри дистров да и просто несколько чрутов удобнее всего использовать с помощью openvz.
Вероятно ты не с той стороны подходишь к решению задачи. Опиши что ты вообще хочешь получить и зачем.
Проблема в том что комада chroot с двумя параметрами не только выпоняет переход но и запускает программу указанную в качестве второго параметра. То есть chroot /mnt/gentoo /bin/bash переходит в каталог /mnt/gentoo и запускает /mnt/gentoo/bin/bash. Как следствие вашему скрипту управление не возвращается. Самый простой, на мой взгляд, способ это копировать в /mnt/gentoo свой скрипт который и вызывать вместо /bin/bash этот скрипт должен вызвать env-update и загрузить sources после чего снова вызвать bash.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.