10
$\begingroup$

Is there a way to get the script directory from inside a Mathematica script?

I want a function analogue to NotebookDirectory[] (which doesn't work for scripts). Is there a way to do this?

$\endgroup$

1 Answer 1

8
$\begingroup$
DirectoryName @ $InputFileName 

is the answer, right?

And this will work whether you call it from a package or a notebook interface:

parentPath = $InputFileName /. "" :> NotebookFileName[] parentDir = DirectoryName @ parentPath 

Check:

path = FileNameJoin[{$TemporaryDirectory, "test.m"}]; Export[ path, "Print @ DirectoryName @ $InputFileName", "Text" ] Get @ path 

(...)\Local\Temp\

$\endgroup$
6
  • $\begingroup$ sorry, but this doesn't work if you call your script (.m) from within the terminal using wolframscript $\endgroup$ Commented Aug 22, 2017 at 13:31
  • $\begingroup$ @Santi could you elaborate, with a script.m file containing only: Print["test parent dir: ", DirectoryName @ $InputFileName] I get: i.sstatic.net/SrLrA.png $\endgroup$ Commented Aug 22, 2017 at 13:41
  • $\begingroup$ hi @Kuba, ok, you are right, but in the way I was running my scripts it doesn't work. If I do: wolfram -script script.m it works. But if I do wolframscript -file script.m it doesn't work. I am on Mathematica 11.1.1 Kernel for Linux x86 (64-bit). $\endgroup$ Commented Aug 22, 2017 at 14:29
  • $\begingroup$ do you have an idea why this doesn't work with wolframscript ? $\endgroup$ Commented Aug 23, 2017 at 8:31
  • $\begingroup$ @Santi I didn't work with scripts yet so I don't know, I will try to investigate if I find time. You could ask a question on main about that. Just make sure to prepare simple example people can run. $\endgroup$ Commented Aug 23, 2017 at 8:33

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.