Как узнать каталог, в котором лежит текущий скрипт

При написании сценария я хотел бы знать, где находится текущий сценарий, чтобы найти другие файлы.

С обычным сценарием Scala я знаю, как это сделать, но со сценарием Ammonite — нет.


person david.perez    schedule 17.08.2017    source источник


Ответы (1)


Вместо стандартной линии челки я обычно использую:

#!/usr/bin/env amm

Я изменил свой сценарий на:

#!/bin/bash
    exec amm "$0" `dirname "$0"` "$@"
!#

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

Аргумент dir получает путь, по которому лежит скрипт. Оно может быть абсолютным или относительным.

Если мы всегда хотим абсолютный путь:

#!/bin/bash
    exec amm "$0" $(cd `dirname "${BASH_SOURCE[0]}"` && pwd) "$@"
!#
person david.perez    schedule 17.08.2017