Как перезапустить оболочку внутри bash-скрипта и продолжить выполнение скрипта?Linux

Ответить Пред. темаСлед. тема
Anonymous
 Как перезапустить оболочку внутри bash-скрипта и продолжить выполнение скрипта?

Сообщение Anonymous »


Первоначальная проблема: Установите менеджер пакетов 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

Итак, вопрос: как как-то перезапустить оболочку внутри скрипта и продолжить выполнение оттуда, чтобы не требовалось перезапускать оболочку и еще раз запускать скрипт вручную?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»