2014-10-02 73 views
-1

我有几十个剧本都开始用这个顶线和调用一个bash复制,如:导出到环境,从脚本轻松

#!/bin/bash 

是做有用的事情。我想要一条线叫一个功能很像:

settoplevel LD_LIBRARY_PATH /home/$USER/libsherenow 

其中settoplevel是一个函数。脚本中的一个函数很好。这将使其成为顶级价值,就像在命令行中输入export this=this一样!

当你坐下来写程序时,在bash和累人的顶层很容易无数次地发出export {whatever}

必须有一个解决这个问题,不是吗?必须有一种方法可以使export foo=bar容易做到,而不必无休止地打字。

+0

我不明白你的问题,如果它是一个问题。 – 5gon12eder 2014-10-02 21:24:50

回答

1

我认为你正在寻找的点.source命令:

. file-that-sets-LD_LIBRARY_PATH 

或者,如果你喜欢打字:

source file-that-sets-LD_LIBRARY_PATH 

如果文件中包含:

... 
export LD_LIBRARY_PATH 

然后这些命令读取脚本(通过在PATH上执行搜索找到,但只有n可读性强;它不必是可执行的)在当前shell环境中,而不是在子shell中。

如果这不是解决问题的大部分,那么您需要用较少的道歉和更清晰的问题来重写问题。

+0

那么,我发现“源”命令是一个完全实现功能的充分方​​法。我做了很多变量赋值来处理组中的变量概念,然后源XXXX调用使得更柔韧的变量等于几乎固定的变量。 Tnx – 2014-10-05 16:04:39

+0

你可以得到相当复杂的脚本来设置环境。我有一个414行的脚本,它为一些我曾经使用过的软件(通过处理多个不同版本的软件而复杂化)适当地重置一套环境变量。我有一个由超过300行的Perl脚本和一个配置文件支持的60多行脚本,它执行另一个环境变量设置任务(再次被多个软件的多个版本卷入)。 – 2014-10-05 16:15:56

+0

谢谢你们的伙伴们。现在我越来越了解它,我看到了更好的方式来获得我想要的结果,然后大致处理环境变量。我想这就是为什么automake autoconf M4X中有这么多的东西,无论这些东西是什么。谢谢 – 2014-11-07 18:14:33