Bash-скрипт не добавляет переменные в сессию [дубликат]

На этот вопрос уже есть ответ здесь:

У меня есть сценарий bash, который у меня есть добавлен как запускаемое приложение. Он выполняет множество операций экспорта и присвоения псевдонимов.

#! /bin/bash

alias devhm='cd ${DEV_HOME}; ll';
alias wlhm='cd ${WL_HOME}; ll';
alias dirch='watch --interval=1 "ls -la"';
alias vols='watch --interval=1 "df -h"';
alias svn-update='svn update --depth infinity ./*';
alias mci="~/mci.sh";
alias vncserver="vncserver -geometry 1680x1050";
alias ..="cd ..";
alias hist="history | grep ";

export PROXY_HOST=proxy.my.setup;
export PROXY_PORT=3128;

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH/usr/lib/oracle/12.1/client64/lib;
export ORACLE_HOME=/usr/lib/oracle/12.1/client64;
export TNS_ADMIN=${ORACLE_HOME}/network/admin;

echo "DONE!";

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

./setup.sh

Я вижу "ГОТОВО!" приглашение напечатано, но не заданы псевдонимы или переменные env.

Если я скопирую и вставлю содержимое файла в терминал, будут установлены псевдонимы и переменные env.

Я также попытался добавить строку для выполнения сценария из .bashrc , но все еще не заданы псевдонимы или переменные env.

Есть идеи, что здесь может происходить? Также может кто-нибудь предложить лучший способ добавления этих переменных / псевдонимов env в каждый сеанс терминала?

0
задан 28 May 2014 в 07:31

1 ответ

В Вашем .bashrc ссылаются на Ваш пользовательский сценарий запуска с помощью . setup.sh вместо ./setup.sh. Это заставит его выполняться в контексте текущей сессии вместо того, чтобы быть выполненным как отдельная программа с ее собственным контекстом.

0
ответ дан 28 May 2014 в 07:31

Другие вопросы по тегам:

Похожие вопросы: