Запуск файла .sh, но после нового PATH не виден в оболочке

1

Я запускаю файл ./setWLSEnv.sh, который имеет следующий вывод:

http://pastebin.com/sSXRZd1s

    PATH=/Users/cris/Oracle/Middleware/Oracle_Home/wlserver/server/bin:/Users/cris/Oracle/Middleware/Oracle_Home/wlserver/../oracle_common/modules/org.apache.
ant_1.9.2/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/H
ome/jre/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin:
/Users/cris/perl5/perlbrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbi
n:/sbin:/opt/X11/bin:/Users/cris/Oracle/Middleware/Oracle_Home/wlser
ver/../oracle_common/modules/org.apache.maven_3.0.5/bin


Your environment has been set.

НО, когда я иду в тот же терминал, и я выполняю

эхо PATH все еще имеет старый путь ...

Любая идея ? Спасибо

Cris
источник
1
У вас есть содержание сценария? Таким образом, мы можем увидеть, правильно ли он выполняется?
ProfFrnswrth
Можем ли мы увидеть сценарий здесь - или, лучше, просто биты, необходимые для предоставления примера, который терпит неудачу - он должен; не быть только по ссылке
Mark

Ответы:

3

Вы не можете запустить скрипт для установки пути в вашей текущей оболочке. В вашем случае это не кажется необходимым в любом случае, потому что все, что делает скрипт - это устанавливает правильные переменные для запуска процесса java в конце. Таким образом, внутри этого процесса все переменные среды должны быть установлены правильно.

Чтобы установить переменные в текущей оболочке, либо установите их в .bashrc/, .bash_profileи откройте новую оболочку; или продублируйте ваш скрипт, удалите последнюю строку и добавьте новый скрипт в оболочку . path/to/new/script.

Nohillside
источник
извините ... последняя строка была добавлена ​​мной, потому что это был единственный способ заставить ее работать, оригинальный файл не имеет последней строки.
Cris
ты был прав !
Cris
, путь / к / новый / скрипт работает ... это то, что я хотел сделать .. что разница между. путь / к / новому / скрипту и ./path/to/new/script?
Cris
Просто чтобы убедиться вдвойне, между первым есть пробел. и остальная часть пути =>. / path / to / your / script
Гьян,
Не семантически говоря ... с точки зрения исполнения я спросил
Cris
2

Я предполагаю (через имя), что это скрипт настройки среды Weblogic. Обычно он вызывается через главный скрипт weblogic, чтобы установить пути перед запуском / остановкой сервера, но вы пытаетесь установить пути в своей собственной оболочке по любой причине. Я думаю, что ваша проблема заключается в том, как вы выполняете скрипт:

./setWLSEnv.sh # will execute the script and do nothing

. ./setWLSEnv.sh # (note starts with a "dot space") 

Предлагаемая вторая строка должна «поставить» скрипт в вашей среде, и он будет работать

Проверьте, почему это будет работать, прочитав «man bash» и поищите внутри определение «source»

thanosa75
источник
0

В вашем файле замените PATH=на PATH=$PATH:. Это берет фактическую переменную PATH и добавляет все ваши новые PATH.

Добавьте export PATHв конец файла. Это экспортирует предыдущий PATH с вашими изменениями.

#!/bin/bash
PATH=$PATH:/Users/cris/Oracle/Middleware/Oracle_Home/wlserver/server/bin:/Users/cristianchiovari/Oracle/Middleware/Oracle_Home/wlserver/../oracle_common/modules/org.apache.ant_1.9.2/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/jre/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin:/Users/cristianchiovari/perl5/perlbrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Users/cristianchiovari/Oracle/Middleware/Oracle_Home/wlserver/../oracle_common/modules/org.apache.maven_3.0.5/bin
export PATH
jherran
источник
это поведение только на MAC или Linux? Этот сценарий предоставлен oracle weblogic, и я сомневаюсь, что мне нужно его изменить ...
Cris
Я добавил путь экспорта до конца, но после завершения сценария ... содержимое PATH также пропало :(
Cris
Вы можете использовать как в MAC, так и в Linux.
Джерран
Да, все это работает и для меня, если я запускаю каждую команду вручную ... Мой sh-файл pastebin.com/sSXRZd1s исходит от oracle weblogic, который используется для установки некоторых переменных перед запуском некоторых java-программ
Cris
Поэтому после запуска этого ./setWLSEnv.sh переменная PATH не изменяется, как в файле, даже если я изменяю файл, добавляя в конце экспорта PATH
Cris