What is nim's equivalent of Python's `sys.executable`?

Viewed 151

Following is the content of foo.py

import sys
print(sys.executable)

When I execute this, I can get the full path of the the Python interpreter that called this script.

$ /mingw64/bin/python3.9.exe foo.py
/mingw64/bin/python3.9.exe

How to do this in nim (nimscript)?

3 Answers

Nim is compiled, so I assume you want to get the path of the application's own binary? If so, you can do that with:

import std/os

echo getAppFilename()

The question mentions NimScript, which has other uses in the Nim ecosystem, but can also be used to write executable scripts instead of using, e.g., Bash or Python. You can use the selfExe proc to get the path to the Nim executable which is running a NimScript script:

#!/usr/bin/env -S nim --hints:off
mode = ScriptMode.Silent

echo selfExe()

After saving the above as test.nims and using chmod +x to make the file executable, the script can be invoked to show the path to the current Nim executable:

$ ./test.nims
/home/.choosenim/toolchains/nim-1.4.8/bin/nim
Related