fish shell: ошибка формата exec

Да, это возможно. Но ошибки могут случиться. Видеодрайверы довольно сложны, и одновременный запуск нескольких X-серверов не очень распространен, поэтому он не требует особого тестирования.

Ошибки, по определению, являются непреднамеренным поведением. Не существует фиксированного набора «последствий» запуска нескольких X-сессий. Если бы в вашем драйвере не было ошибки, все было бы нормально.

5
29.12.2018, 10:42
3 ответа

Вам нужна строка shebang, если исполняемый файл не может быть запущен ядром. Ядро может запускать машинный код только в определенном формате(ELF в большинстве вариантов Unix )или иногда в других форматах (, например. в Linux вы можете зарегистрировать исполняемые форматы через binfmt _misc). Если исполняемый файл нуждается в интерпретаторе , то ядро ​​должно знать, какой интерпретатор вызывать. Вот для чего нужна строка shebang .

Если ваш скрипт использует синтаксис fish, его первая строка должна быть

#!/usr/bin/env fish

(Вместо этого вы можете использовать абсолютный путь, но тогда вам придется изменить скрипт, если вы хотите запустить его на машине, где исполняемый файл fishнаходится в другом месте, например. /usr/bin/fishпротив /usr/local/bin/fish.)

Если ваш скрипт использует синтаксис sh, используйте

#!/bin/sh

(Все современные системы Unix имеют POSIX sh по адресу /bin/sh, поэтому вам не нужно env.)

Если ваш сценарий имеет синтаксис bash (, который представляет собой sh плюс некоторые расширения bash -), используйте

#!/usr/bin/env bash

В Linux на практике #!/bin/bashтакже будет работать.

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

12
27.01.2020, 20:34

Вам необходимо иметь шебанг, чтобы выполнить скрипт, указав его путь. В противном случае операционная система попытается выполнить его, но потерпит неудачу, поскольку это не двоичный исполняемый файл.

Если вы не хотите использовать шебанг, вам нужно указать, что должно выполнять скрипт. В вашем случае это должно быть fish.

fish myscript.sh

5
27.01.2020, 20:34
  1. Также работает следующий способ:

    sudo./<your script>

, поскольку он запускает bash по умолчанию для команд sudo в большинстве дистрибутивов. Но может быть причина, если вы не хотите менять сценарий.

ПРИМЕЧАНИЕ:это неправильный способ решения таких проблем. Внесите изменения, как , предложенное Жилем

.
-2
12.12.2020, 23:03

Теги

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