2014-09-24 3 views
0

Я хотел бы определить тип os в сценарии bash и установить JAVA_HOME соответственно.Определить тип os и установить JAVA_HOME

if [[ $(type -t apt-get) == "file" ]]; then os="apt" 
    elif [[ $(type -t yum)  == "file" ]]; then os="yum" 
    else 
      echo "Could not determine os." 
    fi 

case "$os" in 

     apt) pushd /etc/ \ 
       echo 'export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/' >> /etc/profile ;; 

     yum) pushd /etc/profile.d/ \ 
       echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/' >> /etc/profile.d/user_env.sh ;; 
esac 

Я пробовал это, но, похоже, не писал экспорт в файлы.

Любая помощь очень ценится.

+0

Что такое '$ os' фактически установлен? –

+0

Я добавил изменения – jquery

+0

Просто nit: вы проверяете тип менеджера пакетов, а не тип ОС. – chepner

ответ

2

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

if [[ $(type -t apt-get) == "file" ]]; then os="apt" 
elif [[ $(type -t yum)  == "file" ]]; then os="yum" 
else 
    echo "Could not determine os." 
fi 

case "$os" in 
     apt) echo 'export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/' >> /etc/profile ;; 
     yum) echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/' >> /etc/profile.d/user_env.sh ;; 
esac 

Если вы хотите сохранить pushd, это было бы:

case "$os" in 

     apt) pushd /etc/ 
       echo 'export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/' >> /etc/profile ;; 

     yum) pushd /etc/profile.d/ 
       echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/' >> /etc/profile.d/user_env.sh ;; 
esac 
+0

Спасибо, и вы правы, pushd не служит цели там. – jquery

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