我有一个 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
。这将导致它在当前会话的上下文中执行,而不是作为具有其自己的上下文的单独程序执行。