LINUX.ORG.RU

Как запустить bash, авто-выполнить скрипт и остаться в bash

 ,


0

1

Привет

Мне нужно запустить bash (а реальный кейс - chroot окружение), затем выполнить скрипт, но не выходить из bash после выполнения скрипта.
bashrc не вариант, так как операция единоразовая.
Второй bash - не вариант, так как скрипт содержит установки переменных окружения.

Test case: я хочу вот здесь получить PS1 с перфиксом (new) (естественно, в свежезапущенном bash)

$ bash -c 'export PS1="(new) $PS1"'
Реальный кейс, если это важно
$ chroot /mnt/new_root /bin/bash -c 'export PS1="(chroot) $PS1"'
Как?

★★★★★

Последнее исправление: Kroz (всего исправлений: 3)

можно воспользоваться tmux или screen.

После выполнения скрипта (даже если он запускался не интерактивно по крону) можно будет приаттачиться к сессии, в которой всё выполнялось.

FlyingBuzz
()

.bashrc не вариант, так как операция единоразовая.

bash --rcfile file

укажи свой rcfile для конкретного запуска

futurama ★★★★★
()
Ответ на: комментарий от futurama

bash --rcfile file

Спасибо, работает.

Kroz ★★★★★
() автор топика

На всякий случай, стандартный паттерн

Прочитай постановку задачи, первый параграф, последняя строка (про второй bash).
И/или выполни bash -c 'export PS1="(new) $PS1"; exec bash'.

Kroz ★★★★★
() автор топика
Последнее исправление: Kroz (всего исправлений: 2)
Ответ на: комментарий от Kroz

Ну пардон ¯\_(ツ)_/¯

(bash) $ bash -c "export PS1='(new) $PS1'; exec bash"
(bash)(new) (bash) $ grep PS1 ~/.bashrc
export PS1="(bash)$PS1"
(bash)(new) (bash) $
E ★★★
()

Реальный кейс, если это важно

Иногда это может дать простое для понимания решение без заковыристых извратов:

PS1="(new) $PS1" chroot /mnt/new_root /bin/bash

vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.