OSTYPE недоступен в сценарии оболочки

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

Если я вызываю echo $OSTYPE в терминале xfce, я успешно получаю linux-gnu.

Если я вызываю следующий сценарий, я получаю только пустую строку.

#!/bin/sh
echo $OSTYPE

Я что-то упускаю или это проблема нового убунту?

На другой моей машине он работает с этим скриптом. Но я не знаю, было ли что-то изменено для этого, потому что изначально система не была моей.


person keiki    schedule 02.05.2014    source источник
comment
Более переносимо получать эту информацию через uname. например uname -o   -  person William Pursell    schedule 02.05.2014


Ответы (1)


Переменная среды OSTYPE не распознается исходной оболочкой Bourne, которая вызывается первой строкой вашего скрипта.

Замените на:

#!/bin/bash

or

#!/bin/ksh

в соответствии с вашей настройкой.

person rojomoke    schedule 02.05.2014
comment
Я должен был добавить, что на другой моей машине он работает с / bin / sh. Другая машина использует Ubuntu 13.10, но, возможно, была изменена без моего ведома. - person keiki; 02.05.2014
comment
В конце концов, это был намек в правильном направлении. На моей рабочей машине / bin / sh был связан с / bin / bash. При новой установке / bin / sh связан с / bin / dash - person keiki; 02.05.2014
comment
для портативности: #!/usr/bin/env bash - person Eliran Malka; 23.03.2017
comment
^ просто примечание .. bash нет (для переносимости). поскольку более новый ubuntu использует тире для оболочки. если вам нужна лучшая переносимость, убедитесь, что его оболочка Bourne совместима с POSIX. В bash вы можете обеспечить соответствие с помощью set -o posix или запустить скрипт с помощью --posix. REF - gnu.org/ программное обеспечение / bash / manual / html_node / - person Jimmy MG Lim; 19.05.2018