3

При выполнении сценария по пути (имя сценария, а не "sh scriptname") я получаю следующую ошибку:

-bash: ./gitup: /bin /bash /: плохой интерпретатор: не каталог

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

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

Строка Шебанга гласит #!/ Бен / Баш. Я использовал команду "export PATH = $ PATH:repos / utilities", чтобы указать каталог, в котором хранятся эти сценарии, которые, кроме этого, выполняются просто путем вызова имени сценария (т.е. gitup).

2 ответа2

2

Есть несколько вещей, о которых я могу думать.

  1. Вы сказали, что ваш скрипт находится в вашем $ PATH, но вы называете его полным путем (./gitup а не просто gitup). Может быть, вы отредактировали одну версию скрипта (ту, что в вашем $ PATH, скажем, ~/bin/gitup), а затем выполнили другую (./gitup)?

  2. Может ли быть несколько версий в вашем $ PATH? Вы можете проверить с

    which -a gitup
    
  3. Возможно, вы случайно ввели странный невидимый символ при редактировании сценария. Проверьте строку shebang, используя od:

    head -1 ./gitup | od -c
    

    Убедитесь, что после # нет ничего !/bin/bash, но символ новой строки (\n). Это должно выглядеть так:

    0000000   #   !   /   b   i   n   /   b   a   s   h  \n
    0000014
    
1

Проверьте Шебанг (#!) линия, убедитесь, что это говорит

#!/bin/bash

и не

#!/bin/bash/

Если это похоже на второй пример, измените его на первый.

РЕДАКТИРОВАТЬ(в ответ на этот комментарий)

Если это ограничено только одним сценарием, сделайте копию этого сценария и начните удалять код из него, и создайте минимальный сценарий, который все еще показывает эту проблему. Затем опубликуйте этот минимальный сценарий.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .