2014-09-24 63 views
0

我找不到附加到环境变量的示例。例如,下面的代码完全取代了PATH。可能有人帮助我追加,直接或通过展示我如何访问当前PATH,这样我就可以修改本身并通过全改性价值的Process追加到Scala环境变量

val out2 = Process("env", None, "PATH" -> "/usr/local/bin") 

回答

2

有:

scala> util.Properties.envOrNone("PATH") 
res0: Option[String] = Some(/home/apm/go1.1/go/bin:/home/apm/go/bin:/home/apm/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games) 

那就是:

scala> util.Properties.envOrSome("PATH", Some("")) map (p => s"$p${new sys.SystemProperties()("path.separator")}/tmp") get 
warning: there was one feature warning; re-run with -feature for details 
res5: String = /home/apm/go1.1/go/bin:/home/apm/go/bin:/home/apm/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/tmp 

我只注意到我的道路已经过时。

编辑的成语:

scala> def appendToEnv(key: String, value: String) = util.Properties.envOrNone(key) match { 
    | case Some(v) if v.nonEmpty => s"$v${System getProperty "path.separator"}$value" 
    | case _ => value 
    | } 
appendToEnv: (key: String, value: String)String 

scala> appendToEnv("PATH", "/opt") 
res0: String = /home/apm/go1.1/go/bin:/home/apm/go/bin:/home/apm/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt 

scala> appendToEnv("UNPATH", "/opt") 
res1: String = /opt 
+0

哇噢,正是我需要的。有趣的是你也回答了关于这个话题的其他问题:-P – Hamy 2014-09-24 03:10:54

+0

生活很有趣。我添加了我认为更为习惯的代码。它也处理'Some(“”)'作为边缘情况。 – 2014-09-24 04:54:08