在Linux中覆盖环境变量

时间:2018-11-12 14:26:52

标签: linux unix

我希望为PATH变量添加路径。

我已使用$PATHt1变量复制到名为echo的文件中

echo $PATH > t1

然后我编辑了t1

nano t1

我将路径/usr/local/batch:添加到了路径列表的最前面,并保存了t1。

现在我想将t1保存到$ PATH中,然后覆盖$ PATH。例如

cat t1 > $PATH(例如),但是我收到“歧义重定向”警告。

当我在该论坛上阅读有关如何执行此操作的示例时,我知道它是有效的,但是如果我可以再次找到答案,该死的。

4 个答案:

答案 0 :(得分:1)

这是在UNIX / Linux系统上扩展PATH变量的更通用的方法:

export PATH=/this/is/the/new/directory:$PATH

祝你好运

答案 1 :(得分:0)

如果您真的想从文件中读取PATH:

export PATH=`cat t1`

答案 2 :(得分:0)

如果要使用编辑器来编辑变量,而无需使用该编辑器,则可以将其从moreutils传递到vipe实用程序,然后将其读回。

PATH=$(printf '%s\n' "$PATH"|EDITOR=nano vipe)

( 为了专门编辑PATH,我有一个函数也可以将:转换为换行符并返回:

path_edit () 
{ 
    PATH="$(printf '%s' "$PATH" |tr : '\n'|vipe | tr '\n' : |sed 's/:$//')"
}

如果您没有vipe,可以将其替换为:

vipe(){ sh -euc 't=; trap "rm -f $t" EXIT INT TERM; 
                 t=$(mktemp); cat>$t; ${EDITOR:-vi} $t <>/dev/tty>&0; cat $t'; }

答案 3 :(得分:-2)

由于“>”将覆盖文件的内容,因此可以尝试“ >>”。