2013-03-04 2 views
0

Я хочу написать сценарий оболочки для выполнения команд типа «export JAVA_HOME = .....» Как написать скрипт?как писать команды в сценарий оболочки?

Стараюсь:

#!/bin/sh 
echo "test" 

export PATH=$JAVA_HOME/bin:$PATH 
export AWS_AUTO_SCALING_HOME=/usr/local/CLI 
export PATH=$PATH:$AWS_AUTO_SCALING_HOME/bin 
export AWS_CREDENTIAL_FILE=/usr/local/CLI/credential-file-path.template 

Но команды не выполняются.

+1

Вы хотите запустить их при запуске? Если это так, вам нужно добавить свой сценарий запуска, например '$ HOME/.bashrc', если вы используете оболочку' bash'. – Tuxdude

ответ

4

Но команды не выполняются.

Выполнены, но в суб-оболочке. Родительская оболочка не наследует эти значения.

Вместо выполнения вашего скрипта, source это:

source /path/to/myscript.sh 

Или

. /path/to/myscript.sh 

Дальнейшее чтение:What is the difference between executing a bash script and sourcing a bash script?

+0

Спасибо. Оно работает! –

-1

Вы пробовали настройки разрешения на выполнение файла ??

CHMOD + х имя_файла

+0

Выполнение исполняемого файла сценария не поможет, как описано в других ответах. – Johnsyweb

+0

Тем не менее, если он не делает его «исполняемым», он не сможет его запустить ... –

+0

Этот скрипт не нужно «запускать», он должен быть найден. – Johnsyweb

4

Как вы выполняя свой сценарий? Если вы используете:

$ script.sh 

среда устанавливается на время сценария, но родитель оболочка полностью не зависит от этого (Unix не DOS!).

Чтобы получить результаты команд в вашей оболочке, используйте:

$ . script.sh 

или в Bash вы можете использовать:

$ source script.sh 

(Это синоним для команды . (точка) , который был в оболочках с оболочки Bourne. Команда source сначала была в оболочке C, а затем добавлена ​​в Bash.)

Они читают сценарий в текущем процессе , Любые настройки переменных среды влияют на текущий процесс. Например, ваш профиль эффективно читается, например, с помощью . $HOME/.profile.

Обратите внимание, что файл для пунктирной команды выполняется в каталогах на $ PATH, но файл должен быть доступен для чтения, а не для исполняемого файла.

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