Почему последняя строчка не срабатывает? Не то что-бы приглашение было очень критично, но охота что-бы всё работало.
!# /bin/bash
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"
Несрабатывающий скрипт.
Модератор: /dev/random
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Несрабатывающий скрипт.
какой у вас интересный ша-банг (:
а где у вас все это записано и как запускается?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
BuriK666
- Сообщения: 95
- ОС: GNU/Linux Gentoo
Re: Несрабатывающий скрипт.
chroot - запускает bash в новом окружении, после выхода из окружения Ваш скрипт продолжит выполнятся.
Можно сделать /mnt/gentoo/start.sh
и делать chroot /mnt/gentoo /start.sh
env-update
source /etc/profile
export PS1="(chroot) $PS1"[b]
Можно сделать /mnt/gentoo/start.sh
#!/bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"
/bin/bash
и делать chroot /mnt/gentoo /start.sh
Linux for you.
-
jojahti
- Сообщения: 310
Re: Несрабатывающий скрипт.
SLEDopit
Тьфу! Придиральщик. Ну подумаешь, перепутал местами два символа, когда на форуме писал.
А запускается как-то приблизительно так /.
Скрипт работает кроме самой последней строки
export PS1="(chroot) $PS1"
В этом и вопрос - чего она там в скрипте не фурычит как надо.
Причём если набрать руками - она срабатывает.
какой у вас интересный ша-банг (:
а где у вас все это записано и как запускается?
Тьфу! Придиральщик. Ну подумаешь, перепутал местами два символа, когда на форуме писал.
А запускается как-то приблизительно так /.
Скрипт работает кроме самой последней строки
export PS1="(chroot) $PS1"
В этом и вопрос - чего она там в скрипте не фурычит как надо.
Причём если набрать руками - она срабатывает.
-
/dev/random
- Администратор
- Сообщения: 5441
- ОС: Gentoo
Re: Несрабатывающий скрипт.
Потому что переменные окружения передаются только дочерним процессам, но не родительским. Вы не можете из скрипта установить переменную оболочки, в которой этот скрипт запущен.
Да, и кроме того, последние 3 строки будут выполняться только после того, как вы завершите работу в чруте. Команда chroot не чрутит текущую оболочку, а запускает новую и ждёт её завершения.
-
jojahti
- Сообщения: 310
Re: Несрабатывающий скрипт.
Ааааа. Ясно. То есть нормально эту последовательность действий не автоматизировать?
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Несрабатывающий скрипт.
Автор хотел вовсе не родительскому процессу выставить PS1... ОН просто хотел сделать чрут и *в этой чрут-среде* уже выполнить env-update и изменить PS1. Но сhroot не возвращает управление, пока не завершиться указанная команда (/bin/bash).
Вместо /bin/bash для chroot нужно написать скрипт, который выполнит нужные команды и запустит оболочку. Или запустит оболочку и выполнит в ней нужные команды (env-update, source и т.д.).
Вместо /bin/bash для chroot нужно написать скрипт, который выполнит нужные команды и запустит оболочку. Или запустит оболочку и выполнит в ней нужные команды (env-update, source и т.д.).
-
jojahti
- Сообщения: 310
Re: Несрабатывающий скрипт.
Я подозреваю что проще этого не делать. 
-
Corvus
- Сообщения: 78
Re: Несрабатывающий скрипт.
Почему не сделать?
chroot /mnt/gentoo /bin/bash -l -c "env-update && source /etc/profile; export ..... ; bash"
будет два баша вместо одного, но куда деваться?
будет два баша вместо одного, но куда деваться?