#linux #shell
#linux #оболочка
Вопрос:
test.sh:
#!/bin/bash
echo "helloworld"
Я установил режим файла на 755. когда я пытаюсь запустить скрипт, набрав «./test.sh «, Я получаю это:
helloworld
./test.sh: line 2: /root: is a directory
что происходит???
Комментарии:
1. что происходит, когда вы выполняете ‘/bin/bash -x ./test.sh; echo $?’
2. Вы перенаправляете вывод? Как именно вы это выполняете? Какой пользователь?
3. Вы уверены , что смотрите на то же самое,
test.sh
что и выполняете?cat ./test.sh;./test.sh
было бы интересно посмотреть.4. не перенаправляет вывод. Я также пробовал root и обычного пользователя.
Ответ №1:
Введите exit и посмотрите
#!/bin/bash
echo "helloworld"
exit
Ответ №2:
Я бы поискал забавные вещи в обработчиках ошибок / сигналов и / или PROMPT_COMMAND
Итак,
echo $PS1
echo $PROMPT_COMMAND
trap
было бы в порядке.
Другой подход заключается в том, чтобы ограничить запуск bash (что отключает множество опций)
#!/bin/bash -r
Хотя последнее может устранить странное поведение, это не объясняет, что произошло
Ответ №3:
Я предполагаю, что отредактированный из Windows / повторно использованный Windows-файл с r
внутренней частью, который вы переместили с помощью вставки exit
?
Ответ №4:
Я получил эту ошибку, когда я случайно поставил ~ в последней строке моего скрипта при поиске клавиши escape в vim. Поскольку vim использует тильды для заполнения строк вне файла, ошибка была почти незаметна. Удаление строки, содержащей тильду, помогло мне избавиться от
/root: Is a directory
ошибка.