2014-09-18 10 views
1

Если моя текущая оболочка является оболочкой tcsh (подтверждена >echo $shell и >ps $$ и т. Д.), Мне нужно писать shebangs, как #! bin/tcsh, и иметь только такие скрипты для правильной работы?Отношение Shebang к текущей оболочке

Я сделал скрипты с sh shebangs #! bin/sh, и они работают нормально, хотя моя оболочка всегда была tcsh shell. Мои сценарии имели forloops, которые отличаются от sh и tcsh.

мне нужно изменить свой текущий Tcsh оболочки в ш оболочки для запуска сценариев с Sh shebangs ли? Любая помощь? Спасибо!

+0

Возможно, ваш sh перенаправлен на tcsh. Проверьте с помощью 'ls -l/bin/sh'. – fedorqui

+0

Извините, но я новичок в Linux, и я не уверен, что понял ваш ответ. ls для перечисления содержимого, правильно? Я попробовал это, и я получил «Нет такого файла или каталога». Спасибо хоть! –

ответ

1

Если ваши линии shebang на самом деле были #! bin/sh, то причина, по которой они работали правильно, состоит в том, что этот путь не существует, и ваша текущая оболочка берет на себя выполнение скрипта.

Исправьте путь в строке shebang, чтобы быть действительным абсолютным путем #!/bin/sh, и я ожидаю, что вы увидите, что скрипты начинают сбой.

См. http://www.in-ulm.de/~mascheck/various/shebang/ для получения дополнительной информации о линии shebang, о которой вы, вероятно, заботитесь.

+0

Итак, вы говорите, что с текущей оболочкой tcsh мне нужно иметь скрипты, начинающиеся с tcsh shebangs. Правильно? Итак, shebang должен быть «тем же» с моей текущей оболочкой. Не могли бы вы подтвердить это? –

+0

@eva_thess Нет. Это не то, что я сказал (или имел в виду). Я сказал, что когда у вас есть неправильная строка shebang (например, '#! Bin/sh', которая в лучшем случае является относительным путем) механизм shebang завершится неудачно, и текущая оболочка может решить взять на себя и запустить сам скрипт. Исправьте путь в вашей линии shebang, и он должен начать работать, и эта оболочка должна работать. –