1.4 使用函数添加环境变量

《Linux Shell 脚本攻略(第 2 版)》读书笔记

环境变量通常用于存储路径列表,这些路径可用于搜索可执行文件、库文件等。如$PATH$LD_LIBRARY_PATH

假设我们要将 myapp 安装到 /opt/myapp,它的二进制文件在 bin 目录中,库文件在 lib 目录中。

1. 实战演练

实现方式如下:

export PATH=/opt/myapp/bin:$PATH
export LD_LIBRARY_PATH=/opt/myapp/lib;$LD_LIBRARY_PATH 

我们也可以把下面的函数加入.bashrc

prepend() { [ -d "$2" ] && eval $1=\"$2':'\$$1\" && export $1; }

注意:修改了 .bashrc 之后要使其立即生效必须执行 source ~/.bashrc 命令。

另外,使用 ssh 登陆 shell 的时候,系统不会自动调用.bashrc 文件, 只是会自动的读取 如下三个文件:~/.bash_profile, ~/.bash_login, ~/.profile 里面其中一个。因此,如果想让系统每次登陆时候自动读取文件,可以将.bashrc 文件改为.bash_profile。

2. 工作原理

  1. 检查函数第二个参数所指定的目录是否存在;
  2. 如果存在,eval 表达式将第一个参数所指定的变量值设置成第二个参数的值加上“:”(路径分隔符),随后再跟上首个参数的原始值。
  3. 使用 export 命令使环境变量的修改生效;

注意,如果变量(第一个参数)为空,则会在末尾留下一个“:”。要解决这个问题,可以将该函数再进行一些修改:

prepend() { [ -d "$2" ] && eval $1=\"$2\$\{$1:+':'\$$1\}\" && export $1; }

这里引入了一种 shell 参数扩展形式:

${parameter:+expression}

如果 parameter 有值且不为空,则使用 expression 的值。

你可能感兴趣的:(1.4 使用函数添加环境变量)