Bash 脚本未将变量添加到会话

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

我看到打印了“DONE!”提示,但没有设置别名或环境变量。

如果我将文件内容复制并粘贴到终端中,则会设置别名和环境变量。

我也尝试添加一行来执行脚本,.bashrc但仍然没有设置别名或环境变量。

有什么想法可能在这里发生吗?还有人可以建议一种更好的方法将这些环境变量/别名添加到每个终端会话中吗?

答案1

在您的.bashrc引用中,您的自定义启动脚本使用. setup.sh而不是./setup.sh。这将导致它在当前会话的上下文中执行,而不是作为具有其自己的上下文的单独程序执行。

相关内容