2017-02-17 5 views
1

У меня есть простой скрипт:Почему я не могу выполнить сценарий оболочки, используя. ./test.sh?

#!/bin/bash 
echo test 

Я могу выполнить скрипт успешно, как:

./test.sh 

и

source ./test.sh 

Однако, следующие выдает ошибку:

. ./test.sh 

ошибка:

.: Command not found. 

Что может быть причиной ошибки? Это работает на el capitan (это было обновление), но не на sierra. Что-то изменилось с помощью терминала или оболочки по умолчанию в последних нескольких основных выпусках?

Я запускаю macOS 10.12.3 с терминалом по умолчанию - это чистая установка и НЕ обновление (обновления зависают в предыдущих настройках оболочки).

+0

Можете ли вы попробовать это как просто '. test.sh', 'POSIX' рекомендует этот путь. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#dot – Inian

+0

Я все еще получаю.: команда не найдена – csilk

+1

@Inian: POSIX говорит: «Если файл не содержит , оболочка должна использовать путь поиска, указанный PATH, чтобы найти каталог, содержащий файл. ", что подразумевает, что вы _must_ используете префикс пути'./'для источника файла в каталоге _current_. '. test.sh' _shouldn't_ посмотреть в текущем каталоге. ('bash' does, но' dash', 'ksh' и' zsh' не соответствуют POSIX). – mklement0

ответ

3

Это звучит как вы перешли свою оболочку по умолчанию на что-то другое, чем bash, вероятно, csh, где (а) . не встроенная команда (только source есть), и (б) даже если бы это было , вы не смогли бы загрузить код Bash в текущую сессию.

Чтобы проверить, что такое оболочка по умолчанию, запустите echo $SHELL.

Запустите chsh -s /bin/bash, чтобы вернуться к bash в качестве вашей оболочки по умолчанию.

+1

Выход теперь читается/bin/bash. поэтому похоже, что оболочка по умолчанию была изменена одним из сценариев, которые моя компания использует для настройки новых macbooks - большое спасибо за вашу помощь. Я приму свой ответ. – csilk

Смежные вопросы