如何知道当前脚本所在的目录

How to know the directory where the current script lies

写脚本时,想知道当前脚本在什么位置,以便定位其他文件。

对于常规的 Scala 脚本,我知道该怎么做,但是对于 Ammonite 脚本我不知道。

我通常使用的不是标准的爆炸线:

#!/usr/bin/env amm

我将脚本更改为:

#!/bin/bash
    exec amm "[=11=]" `dirname "[=11=]"` "$@"
!#

@main
def main(dir: String) {
    print(dir)
}

dir参数接收脚本所在的路径。可以是绝对的也可以是相对的。

如果我们总是渴望绝对路径:

#!/bin/bash
    exec amm "[=12=]" $(cd `dirname "${BASH_SOURCE[0]}"` && pwd) "$@"
!#