如何在菊石壳中使用sudo"

时间:2016-08-14 04:54:52

标签: scala ammonite

关于Scala REPL的一件事很糟糕,就是没有直接加载maven / sbt依赖的方法。

我发现了一个像load.ivy这样的方便的东西,它非常甜。它在文件系统上也有一个不错的包装器。

但是我没有找到办法做sudo。因此,例如,如果我循环遍历目录中的文件而我没有对文件夹的权限,则命令失败

ls.rec! cwd | (x => x.size -> x.last) sortBy (-_._1) take 3

错误

java.nio.file.AccessDeniedException: /Users/foo/Library/Saved Application State/com.bitrock.appinstaller.savedState
  sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
  sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
  sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
  sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:407)
  java.nio.file.Files.newDirectoryStream(Files.java:457)

有人知道如何在菊石壳中做一个sudo吗?

1 个答案:

答案 0 :(得分:1)

有许多方法可以为JVM进程调用提供sudo密码:

就个人而言,我发现最直接的解决方案是设置SUDO_ASKSPASS环境变量。像

这样的东西
val sudo = "sudo"
val askPass = "/usr/bin/ssh-askpass"
val procBuilder = Process(List(sudo, "-A", ???), None, "SUDO_ASKPASS" -> askPass)
val res = procBuilder.!