
On Sun, Oct 06, 2019 at 11:06:26AM -0600, Michael Sloan wrote:
You can override the temporary directory by setting the TMPDIR environment variable.
To have this apply to all of your stack invocations, consider putting an alias in your .bashrc, something like:
$ alias stack="TMPDIR=~/.local/tmp ~/.local/bin/stack"
Thanks, though I am inclined for the fancier[1]: stack() { ( dir=$(mktemp -d /tmp/stack.XXXXXX) || exit 1 trap '/bin/rm -rf $dir; exit' EXIT HUP INT QUIT TERM TMPDIR=$dir $HOME/.local/bin/stack "$@" ); } [1] Note mktemp(1) is not covered by the Single Unix Specification, so portability is not assured, the below should work on at least BSD Systems and Linux.
I don't see the same behaviour with "stack script", though if I create a script to run in "/tmp", then ghc is, somewhat unexpectely, executed with "-i/tmp/", which also has security implications...
But I probably still need to take care to avoid building single-use throw-away scripts for "stack script" in /tmp: $ script=$(mktemp /tmp/script.XXXXXX) $ ... generate content of $script ... $ stack script "$script" since it seems that the above will search /tmp for dependencies. -- Viktor.