Непреднамеренный выход из сеанса tmux при нажатии Ctrl -r для поиска в истории на zsh

Отдельный сценарий не должен проверять, в каком интерпретаторе он работает. Такой вид самоанализа неудобен и подвержен ошибкам, и, возможно, его придется реализовывать по-разному для разных Unices.

Например, сценарий Perl всегда можно с уверенностью предположить, что он интерпретируется интерпретатором Perl, сценарий Python всегда выполняется интерпретатором Python и так далее. Так почему бы сценарию bashне предполагать, что он запускается bash, а сценарию sh— что он запускается /bin/sh?

Тестирование конкретных возможностей текущего интерпретатора — это отдельная проблема, и, например. bashпредлагает $BASH_VERSIONи массив $BASH_VERSINFOдля проверки версии против (, например ).

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

Вы можете сделать это,

  • Отсутствие суффикса имени файла в файле скрипта,на случай, если это "запутает" пользователя. Сценарий bashв файле myscript.shможет заставить пользователя думать, что его можно запустить с помощью sh. Вместо этого просто вызовите скрипт myscriptи...

  • Используйте строку#!("shebang" или "hashbang" ).

Строка#!-идет в самой первой строке скрипта (, два символа #!должны быть первыми в файле )и указывают путь к используемому интерпретатору.

Сценарий bashможет иметь

#!/bin/bash

, если это путь к исполняемому файлу bashв вашей системе, или если вы хотите, чтобы bashзагружался из любого места в $PATH, где он находится в вашей системе,

#!/usr/bin/env bash

в качестве первой строки, например.

Это гарантирует, что он всегда будет интерпретироваться bash, а не sh, csh, pythonили каким-либо другим интерпретатором несвязанного языка.

Следующим шагом будет

  • Сделайте скрипт исполняемым, используя chmod +x myscript.

Теперь вы можете запустить свой скрипт с помощью

./myscript

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

-1
17.06.2020, 14:33
1 ответ

Конечно, это, вероятно, не нормальное поведение, но вы не даете достаточно информации, чтобы понять, что происходит.

Если происходит сбой tmux и вы не можете снова подключиться к тому же сеансу, вам следует убедиться, что это все еще происходит с последней версией tmux, и если это так, откройте отчет об ошибке.

-1
18.03.2021, 23:26

Теги

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