The following code runs fine if I run it interactively:
Clear@realpath;
realpath[path_] := Import["!readlink "<>path, "Text"];
testsymlink = FileNameJoin[{$HomeDirectory, "testsymlink"}];
test = realpath[testsymlink];
In particular, the variable test
gets the expected (non-Null
) value.
The same code runs fine also if I put it in a standalone script and execute it with
<< "/path/to/script.m";
But if I put the same code, all by itself, in my Kernel/init.m
file, it fails: the variable test
gets the incorrect value Null
. (The variable testsymlink
, on the other hand, is still correctly set.)
Furthermore, if I then evaluate
realpath[testsymlink]
interactively (in the newly started Mathematica session), I get the error shown in this post's title, twice:
I can't figure out why I'm getting this error, but I'm having it may give someone else a clue as to why the snippet is failing in the first place (when run as part of executing Kernel/init.m
.
PS: It appears that the offending snippet puts the session in a corrupted state, because when I attempted to upload the image shown above, I got this error:
I had first restart Mathematica (after deleting the offending snippet from Kernel/init.m
), before I could upload these images.
*.m
, and therefore in some systems, MATLAB is set as the default program for such files. Could there be a weird interaction between Mathematica and the desktop environment that leads Mathematica to conclude that a particular*.m
file is not a "MathLink executable"? Grasping at straws here... I'd test this idea myself, but I no longer have access to the system where I got this error. $\endgroup$ – kjo May 1 '16 at 12:03