Как перезапустить оболочку внутри bash-скрипта и продолжить выполнение скрипта? ⇐ Linux
Как перезапустить оболочку внутри bash-скрипта и продолжить выполнение скрипта?
Первоначальная проблема: Установите менеджер пакетов nix, затем установите другие программы (например, lua), используя nix, запустив сценарий bash только один раз.
Решение: Я написал следующий bash-скрипт install.sh:
#!/bin/bash install_nix() ( echo "установка nix..." эхо "" curl --location https://releases.nixos.org/nix/nix-2.18.1/install | ш -s -- --демон эхо "" ) если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» install_nix фи nix-env --install --attr nixpkgs.lua Проблема: сценарий приводит к следующему:
./install.sh: строка 18: nix-env: команда не найдена потому что менеджер пакетов nix требует перезапуска оболочки после установки
---- Напоминания ------------------------------------------ -----------------------
[ 1 ]
Nix не будет работать в активных сеансах оболочки, пока вы их не перезапустите.
Итак, чего я хочу: каким-то образом перезапустить оболочку внутри скрипта и продолжить выполнение оттуда, чтобы мне не нужно было перезапускать оболочку и запускать скрипт еще раз вручную< /эм> Как я пытался решить проблему:
1 exec bash
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» install_nix исполнительный удар фи ... 2 руководитель $0 $@
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» install_nix руководитель @0 $@ фи ... 3 exec bash $0 $@
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» install_nix исполнительный bash @0 $@ фи ... 4 подоболочка
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» (установочный_никс) фи ... 5 подстановка команды $()
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» $(install_nix) фи ... 6 подстановка команды ``
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» `install_nix` фи ... 7 просто бей
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» bash install_nix фи ... 8 bash + исходный код
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» new_shell = $(баш) исходный файл install_nix отказаться от $new_shell фи ... Все это происходит внутри WSL Ubuntu 22.04.2 LTS
Итак, вопрос: как как-то перезапустить оболочку внутри скрипта и продолжить выполнение оттуда, чтобы не требовалось перезапускать оболочку и еще раз запускать скрипт вручную?
Первоначальная проблема: Установите менеджер пакетов nix, затем установите другие программы (например, lua), используя nix, запустив сценарий bash только один раз.
Решение: Я написал следующий bash-скрипт install.sh:
#!/bin/bash install_nix() ( echo "установка nix..." эхо "" curl --location https://releases.nixos.org/nix/nix-2.18.1/install | ш -s -- --демон эхо "" ) если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» install_nix фи nix-env --install --attr nixpkgs.lua Проблема: сценарий приводит к следующему:
./install.sh: строка 18: nix-env: команда не найдена потому что менеджер пакетов nix требует перезапуска оболочки после установки
---- Напоминания ------------------------------------------ -----------------------
[ 1 ]
Nix не будет работать в активных сеансах оболочки, пока вы их не перезапустите.
Итак, чего я хочу: каким-то образом перезапустить оболочку внутри скрипта и продолжить выполнение оттуда, чтобы мне не нужно было перезапускать оболочку и запускать скрипт еще раз вручную< /эм> Как я пытался решить проблему:
1 exec bash
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» install_nix исполнительный удар фи ... 2 руководитель $0 $@
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» install_nix руководитель @0 $@ фи ... 3 exec bash $0 $@
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» install_nix исполнительный bash @0 $@ фи ... 4 подоболочка
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» (установочный_никс) фи ... 5 подстановка команды $()
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» $(install_nix) фи ... 6 подстановка команды ``
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» `install_nix` фи ... 7 просто бей
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» bash install_nix фи ... 8 bash + исходный код
... если ! команда -v nix-env &> /dev/null; затем эхо «nix не установлен» new_shell = $(баш) исходный файл install_nix отказаться от $new_shell фи ... Все это происходит внутри WSL Ubuntu 22.04.2 LTS
Итак, вопрос: как как-то перезапустить оболочку внутри скрипта и продолжить выполнение оттуда, чтобы не требовалось перезапускать оболочку и еще раз запускать скрипт вручную?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как изменить оболочку SSH-соединения pycharm в Windows на bash по умолчанию на сервере?
Anonymous » » в форуме Linux - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Запуск содержимого bash-скриптов из скрипта Python. Не выполнение файла .sh [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-