. Если скрипт был запущен из интерпретатора, вы не можете быть уверены, что он имеет shebang вообще. Скрипты, выполняемые из интерпретатора, не нуждаются в shebang, если вы вызываете интерпретатора для запуска кода.
Поэтому ответ отрицательный, нет команды, которая точно узнает, что такое язык ( интерпретатор) для запуска скрипта. Однако вы всегда можете заглянуть внутрь скрипта и посмотреть, есть ли у него shebang.
Короче говоря:
Когда вы запускаете скрипт, вызов интерпретатора всегда перекрывает возможные shebangs, исполняемый файл или нет, shebang или нет. Если он не исполняется и запускается из интерпретатора, сценарий не нуждается ни в каком shebang. Если сценарий запускается без вызова интерпретатора сначала, ему нужно (и использует) shebang, чтобы узнать, какой интерпретатор должен позвонить, и он должен быть исполняемым, чтобы иметь «разрешение» называть интерпретатора из его shebang.Если сценарий не имеет shebang, внутри скрипта нет (direct *) информации, чтобы сообщить, какой интерпретатор использовать.
Вы, конечно, всегда можете написать сценарий оболочки на всех , чтобы узнать, есть ли скрипт в shebang и прочитать интерпретатор из
Пример
#!/usr/bin/env python3
import subprocess
import sys
args = sys.argv[1:]; script = args[0]
try:
lang = open(script).readlines()[0].replace("#!", "").strip().split()[-1]
cmd = [lang, script]+args[1:]
subprocess.call(cmd)
except (PermissionError, FileNotFoundError, IndexError):
print("No valid shebang found")
Сохраните его как tryrun в $PATH (например, ~/bin, создайте каталог, если он не существует, выходит из системы и обратно), делает его исполняемым. Затем запуск: tryrun /path/to/nonexecutablescript
вызывает (проверяет) правильный интерпретатор на моих невыполняемых сценариях python и bash. tryrun /path/to/nonexecutablescript
вызывает (проверяет) правильный интерпретатор на моих невыполняемых сценариях python и bash. Если он не может вызвать действительный интерпретатор, он поднимет либо PermissionError, либо FileNotFoundError. Расширение (.sh, .py и т. д.) не играет никакой роли в определении соответствующего интерпретатора в Linux.
(* Конечно, можно разработать «умный» алгоритм угадывания, чтобы определить синтаксис кода.)
Если Linux обнаружит проблему на жестком диске, она переключит файловую систему на чтение только для предотвращения повреждения файловой системы.
Так как это происходит во время установки, я бы предположил, что с компакт-диском что-то не так (т. е. плохой ISO). Вы можете это узнать, запустив опцию «check cd», которую вы получаете во время загрузки. Если это показывает ошибки, вам необходимо повторно загрузить и перезаписать установочный диск.
Если установочный диск окажется идеальным, это может быть проблема с оборудованием. Это может быть ваш жесткий диск, который терпит неудачу. Или, если это рабочий стол, он также может быть неисправным кабелем.
Если Linux обнаружит проблему на жестком диске, она переключит файловую систему на чтение только для предотвращения повреждения файловой системы.
Так как это происходит во время установки, я бы предположил, что с компакт-диском что-то не так (т. е. плохой ISO). Вы можете это узнать, запустив опцию «check cd», которую вы получаете во время загрузки. Если это показывает ошибки, вам необходимо повторно загрузить и перезаписать установочный диск.
Если установочный диск окажется идеальным, это может быть проблема с оборудованием. Это может быть ваш жесткий диск, который терпит неудачу. Или, если это рабочий стол, он также может быть неисправным кабелем.
Если Linux обнаружит проблему на жестком диске, она переключит файловую систему на чтение только для предотвращения повреждения файловой системы.
Так как это происходит во время установки, я бы предположил, что с компакт-диском что-то не так (т. е. плохой ISO). Вы можете это узнать, запустив опцию «check cd», которую вы получаете во время загрузки. Если это показывает ошибки, вам необходимо повторно загрузить и перезаписать установочный диск.
Если установочный диск окажется идеальным, это может быть проблема с оборудованием. Это может быть ваш жесткий диск, который терпит неудачу. Или, если это рабочий стол, он также может быть неисправным кабелем.
Если Linux обнаружит проблему на жестком диске, она переключит файловую систему на чтение только для предотвращения повреждения файловой системы.
Так как это происходит во время установки, я бы предположил, что с компакт-диском что-то не так (т. е. плохой ISO). Вы можете это узнать, запустив опцию «check cd», которую вы получаете во время загрузки. Если это показывает ошибки, вам необходимо повторно загрузить и перезаписать установочный диск.
Если установочный диск окажется идеальным, это может быть проблема с оборудованием. Это может быть ваш жесткий диск, который терпит неудачу. Или, если это рабочий стол, он также может быть неисправным кабелем.
Если Linux обнаружит проблему на жестком диске, она переключит файловую систему на чтение только для предотвращения повреждения файловой системы.
Так как это происходит во время установки, я бы предположил, что с компакт-диском что-то не так (т. е. плохой ISO). Вы можете это узнать, запустив опцию «check cd», которую вы получаете во время загрузки. Если это показывает ошибки, вам необходимо повторно загрузить и перезаписать установочный диск.
Если установочный диск окажется идеальным, это может быть проблема с оборудованием. Это может быть ваш жесткий диск, который терпит неудачу. Или, если это рабочий стол, он также может быть неисправным кабелем.
Если Linux обнаружит проблему на жестком диске, она переключит файловую систему на чтение только для предотвращения повреждения файловой системы.
Так как это происходит во время установки, я бы предположил, что с компакт-диском что-то не так (т. е. плохой ISO). Вы можете это узнать, запустив опцию «check cd», которую вы получаете во время загрузки. Если это показывает ошибки, вам необходимо повторно загрузить и перезаписать установочный диск.
Если установочный диск окажется идеальным, это может быть проблема с оборудованием. Это может быть ваш жесткий диск, который терпит неудачу. Или, если это рабочий стол, он также может быть неисправным кабелем.