如何从bash脚本修改/ etc/environment

sla*_*vak 4 linux bash environment-variables

目前,我正在尝试自动化我们在工作中使用的程序.每当我们安装Oracle的JDK时,我们都需要手动将其添加到我们的全局PATH变量中.以下是该程序的摘录:

sudo vi /etc/environment
add this at the beginning of the PATH : "/opt/jdk1.6.0_45/bin:"
Run Code Online (Sandbox Code Playgroud)

这是/etc/environment我电脑上的内容:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Run Code Online (Sandbox Code Playgroud)

以下是修改后的样子:

PATH="/opt/jdk1.6.0_45/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Run Code Online (Sandbox Code Playgroud)

不要忘记这个文件不是脚本,而是包含KEY = VALUES的文件.此文件存储系统范围的区域设置和路径设置.

我的问题是如何PATH/etc/environment不涉及任何手动操作的情况下添加变量的新路径,最好只使用bash脚本.另外,如果我运行两次生成的脚本,我想避免看到我的JDK路径多次添加.

Sym*_*rog 7

您可以使用sed首先删除然后插入jdk路径:

#!/bin/bash
sed -e 's|/opt/jdk1.6.0_45/bin:||g' -i /etc/environment 
sed -e 's|PATH="\(.*\)"|PATH="/opt/jdk1.6.0_45/bin:\1"|g' -i /etc/environment
Run Code Online (Sandbox Code Playgroud)