Несрабатывающий скрипт.

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
jojahti
Сообщения: 310

Несрабатывающий скрипт.

Сообщение jojahti »

Почему последняя строчка не срабатывает? Не то что-бы приглашение было очень критично, но охота что-бы всё работало.

!# /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"
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Несрабатывающий скрипт.

Сообщение SLEDopit »

jojahti писал(а):
06.05.2010 17:44
!# /bin/bash
какой у вас интересный ша-банг (:

а где у вас все это записано и как запускается?
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.
Спасибо сказали:
Аватара пользователя
BuriK666
Сообщения: 95
ОС: GNU/Linux Gentoo

Re: Несрабатывающий скрипт.

Сообщение BuriK666 »

chroot - запускает bash в новом окружении, после выхода из окружения Ваш скрипт продолжит выполнятся.
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: Несрабатывающий скрипт.

Сообщение jojahti »

SLEDopit
какой у вас интересный ша-банг (:

а где у вас все это записано и как запускается?

Тьфу! Придиральщик. Ну подумаешь, перепутал местами два символа, когда на форуме писал. :)

А запускается как-то приблизительно так /. :)

Скрипт работает кроме самой последней строки
export PS1="(chroot) $PS1"

В этом и вопрос - чего она там в скрипте не фурычит как надо.

Причём если набрать руками - она срабатывает.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5441
ОС: Gentoo

Re: Несрабатывающий скрипт.

Сообщение /dev/random »

jojahti писал(а):
06.05.2010 19:32
Скрипт работает кроме самой последней строки
export PS1="(chroot) $PS1"

В этом и вопрос - чего она там в скрипте не фурычит как надо.

Причём если набрать руками - она срабатывает.

Потому что переменные окружения передаются только дочерним процессам, но не родительским. Вы не можете из скрипта установить переменную оболочки, в которой этот скрипт запущен.

Да, и кроме того, последние 3 строки будут выполняться только после того, как вы завершите работу в чруте. Команда chroot не чрутит текущую оболочку, а запускает новую и ждёт её завершения.
Спасибо сказали:
Аватара пользователя
jojahti
Сообщения: 310

Re: Несрабатывающий скрипт.

Сообщение jojahti »

Ааааа. Ясно. То есть нормально эту последовательность действий не автоматизировать?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Несрабатывающий скрипт.

Сообщение serzh-z »

Автор хотел вовсе не родительскому процессу выставить PS1... ОН просто хотел сделать чрут и *в этой чрут-среде* уже выполнить env-update и изменить PS1. Но сhroot не возвращает управление, пока не завершиться указанная команда (/bin/bash).

Вместо /bin/bash для chroot нужно написать скрипт, который выполнит нужные команды и запустит оболочку. Или запустит оболочку и выполнит в ней нужные команды (env-update, source и т.д.).
Спасибо сказали:
Аватара пользователя
jojahti
Сообщения: 310

Re: Несрабатывающий скрипт.

Сообщение jojahti »

Я подозреваю что проще этого не делать. :huh:
Спасибо сказали:
Corvus
Сообщения: 78

Re: Несрабатывающий скрипт.

Сообщение Corvus »

Почему не сделать?

:) chroot /mnt/gentoo /bin/bash -l -c "env-update && source /etc/profile; export ..... ; bash"

будет два баша вместо одного, но куда деваться? ;)
Спасибо сказали: