Установка WolframEngine на WSL. Сценарий оболочки не запускается

/dev/sd *доступен без монтирования. Действительно, раньше я успешно записывал файл непосредственно в /dev/sdb, но то, что я записывал, было необработанным USB-диском. Файл, который я написал, был образом установочного диска Ubuntu, когда я затем использовал загрузочную флешку для установки Ubuntu на новый компьютер. Вы можете писать в /dev/sda, как если бы это был файл, но он записывается на диск в необработанном виде. Если вы попытаетесь записать второй файл, он будет записан поверх первого файла, и, если это не что-то вроде образа диска, большинство других компьютеров/программ не будут знать, что с ним делать.

Монтирование делает попытку добавить драйвер файловой системы в -между необработанным диском и вашей файловой системой. Частью процесса монтирования является выбор правильной файловой системы, FAT32, Ext4, NTFS и т. д. и инициализация этого драйвера для понимания содержимого монтируемого диска. Теперь он интерпретирует диск как структурированную файловую систему с папками, файлами и метаданными об этих папках/файлах.

0
27.09.2021, 00:04
1 ответ

Краткий ответ:

На самом деле это не проблема WSL, так как в чистой установке Linux поведение такое же. Сценарий установщика предназначен для выполнения, а не для источника :

.
chmod +x WolframEngine_12.3.1_LINUX.sh
sudo./WolframEngine_12.3.1_LINUX.sh

Вам понадобитсяsudo(в сообщении установщика, если вы попытаетесь запустить его как обычный пользователь ).

Пояснение:

Скрипт состоит из двух частей:

  • Первая часть — скрипт
  • Вторая часть представляет собой архив, включающий бинарные файлы для установки

Сценарий вначале считывает сам себя, извлекает, а затем запускает бинарный установщик.

Чтобы узнать, почему это не работает при использовании источника,вы можете воспроизвести этот сценарий, создав свой собственный сценарий как с текстовым, так и с двоичным кодом:

Создайте файл dont_source_me.shс:

#!/usr/bin/bash
echo Hello
exit

Затем:

> bash # start a subshell
> source dont_source_me.sh
Hello
# Note that the subshell has exited since sourcing causes all commands to be executed within the current shell
> cat /usr/bin/ls >> dont_source_me.sh
> source dont_source_me.sh
bash:.: dont_source_me.sh: cannot execute binary file
> chmod +x dont_source_me.sh
>./dont_source_me.sh
Hello

Обратите внимание, что оболочка не завершила работу, когда скрипт выполнялся таким образом (, как это было при исходном коде ). Исполняемый скрипт запускает собственную подоболочку. В данном случае команда exitпросто вызывала завершение сценария до того, как он добрался до двоичной полезной нагрузки.

0
27.09.2021, 05:53

Теги

Похожие вопросы