Как изменить оболочку во временном скрипте в SunOS?

#bash #scripting #sunos

#bash #создание сценариев #sunos

Вопрос:

На компьютере установлена оболочка по умолчанию «sh» и запущен SunOS. Я пытаюсь запустить скрипт, подобный:

 #!/bin/bash
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P9
echo $NLS_LANG
  

Я получаю вывод:

NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P9 ^M: не является идентификатором

Я думаю, что скрипт не может выполнить эту команду, но не понимаю почему. Возможно, это потому, что оболочка по умолчанию не является оболочкой bash.

Не могли бы вы помочь мне преобразовать оболочку sh в оболочку bash внутри скрипта.

P.S: Я также пробовал с #!/bin / sh, но результат тот же

Ответ №1:

Ваш скрипт использует неправильные окончания строк. Запустите его через dos2unix .

Комментарии:

1. Теперь я получаю вывод: NLS_LANG=AMERICAN_AMERICA. WE8ISO8859P9: не является идентификатором

2. Как вы выполняете скрипт?

Ответ №2:

Вы уверены, что Bash находится там, где вы говорите? Рассмотрите возможность использования следующего shebang:

 bash-3.2$ cat ./test.sh
#!/usr/bin/env bash
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P9
echo $NLS_LANG
  

Убедитесь, что ваш сценарий оболочки является исполняемым:

 bash-3.2$ chmod  x ./test.sh
bash-3.2$ ls -l ./test.sh
-rwxr-xr-x  1 paj  staff  81 26 Apr 11:52 ./test.sh
  

И запустите…

 bash-3.2$ ./test.sh
AMERICAN_AMERICA.WE8ISO8859P9
  

Комментарии:

1. Спасибо Johnsyweb, я нашел свою ошибку. Я пытался запустить с #sh test.sh чтобы это не сработало. Я пробовал с # ./test.sh и это работает. Спасибо всем…

2. Рад помочь. Вам не нужно ничего вводить перед ./test.sh .