Это действительно очень странно. Описанные вами шаги должны были сработать, поэтому в вашей среде или при выполнении этих шагов должна быть небольшая ошибка. Есть несколько вещей, которые вы можете сделать, чтобы помочь диагностировать это:
ПРОВЕРКА КОНТРОЛЬНЫХ СИМВОЛОВ
То, что вы задокументировали, выглядит хорошо, если нет опечаток или управляющих символов. Вы должны проверить, набрав:
cat -vt ./test
Если вы видите какой-либо неожиданный дополнительный текст, который может объяснить проблему. Например, «^ M» в конце строки будет означать, что ваш редактор сохранил файл в формате Windows.
РЕГЕНЕРАЦИЯ ФАЙЛА НАДЕЖНО
Чтобы создать заведомо исправный ./test2
, скопируйте и вставьте команды ниже:
`which bash`
printf "#\!`which sh`\necho HELLO\n" > ./test2
chmod +x ./test2
./test2
exit
ПРОВЕРКА КАКОЙ КОМАНДЫ НЕ МОЖЕТ НАЙТИ
Если вы введете ...
./ajio
... вы точно получаете ...
./ajio: Command not found.
... как вы описали с ./test
? Я просто придумал имя ajio, чтобы оно не существовало. Если они совпадают, значит, это ничего нового не скажет. Но если сообщения различаются, это подтверждает, что ./test
был хотя бы найден и выполним.
Также возможно, что ваша версия sh
пытается вам не сказать, что test
не может быть найден, но что во время выполнения test
не удалось найти какую-либо команду, которую пытается выполнить оболочка. Это не должна быть команда echo, как в большинстве реализаций оболочки, которые будут внутренней командой, реализованной внутри оболочки. Но оболочка может запустить скрипт инициализации, содержащий строку, указывающую команду, которую она не может выполнить. Если вы запустите man sh
, он расскажет вам обо всех различных файлах запуска, которые ваша оболочка может попытаться запустить. Они могут отличаться от тех, которые используются при интерактивном запуске оболочки. Но, как начинающий, это может быть сложно проверить правильность этих сценариев. Вполне вероятно, что любые фиктивные настройки будут относиться к процессу запуска вашей личной оболочки, и это не повлияет на всю установку Linux, поэтому запустите ls -ld ~/.*
, чтобы вывести список скрытых файлов в вашем домашнем каталоге и проверить все, которые выглядят как файлы запуска оболочки (например, ~ / .bashrc, ~ / .profile, ~ / .bash_login). Проверьте, какие команды, которые они задают, могут быть найдены с помощью и вызываются после того, как переменная пути установлена, чтобы включить их местоположение.
СРАВНЕНИЕ С ДРУГОЙ ОБОЛОЧКОЙ
Если есть проблема с установкой / инициализацией / bin / sh, то вы можете обойти ее, вызвав другую оболочку. Попробуйте ...
which zsh
which tcsh
which csh
... и если один из них найдет для вас альтернативную оболочку, отредактируйте или создайте заново файл, указав эту оболочку, ала ...
#!/bin/csh
echo HELLO
... затем chmod +x
и ./
- запустите. Если это работает, то вы знаете, что ваша проблема связана с / bin / sh.