
# 11. Locations used by Stack
Generally, you do not need to worry about where Stack stores various files. But
some people like to know this stuff. That's when the `stack path` command is
useful.
## The `stack path` command
`stack path --help` explains the available options and, consequently,
the output of the command:
~~~text
--stack-root Global Stack root directory
--global-config Global Stack configuration file
--project-root Project root (derived from stack.yaml file)
--config-location Configuration location (where the stack.yaml file is)
--bin-path PATH environment variable
--programs Install location for GHC and other core tools (see
'stack ls tools' command)
--compiler-exe Compiler binary (e.g. ghc)
--compiler-bin Directory containing the compiler binary (e.g. ghc)
--compiler-tools-bin Directory containing binaries specific to a
particular compiler
--local-bin Directory where Stack installs executables (e.g.
~/.local/bin (Unix-like OSs) or %APPDATA%\local\bin
(Windows))
--extra-include-dirs Extra include directories
--extra-library-dirs Extra library directories
--snapshot-pkg-db Snapshot package database
--local-pkg-db Local project package database
--global-pkg-db Global package database
--ghc-package-path GHC_PACKAGE_PATH environment variable
--snapshot-install-root Snapshot installation root
--local-install-root Local project installation root
--snapshot-doc-root Snapshot documentation root
--local-doc-root Local project documentation root
--local-hoogle-root Local project documentation root
--dist-dir Dist work directory, relative to package directory
--local-hpc-root Where HPC reports and tix files are stored
~~~
In addition, `stack path` accepts the flags above on the command line to state
which keys you are interested in. This can be convenient for scripting. As a
simple example, let us find out the sandboxed versions of GHC that Stack
installed:
=== "Unix-like"
Command:
~~~text
ls $(stack path --programs)/*.installed
/home//.stack/programs/x86_64-linux/ghc-9.0.2.installed
~~~
=== "Windows"
In PowerShell, command:
~~~text
dir "$(stack path --programs)/*.installed"
Directory: C:\Users\mikep\AppData\Local\Programs\stack\x86_64-windows
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 27/07/2022 5:40 PM 9 ghc-9.0.2.installed
-a--- 25/02/2022 11:39 PM 9 msys2-20210604.installed
~~~
While we are talking about paths, to wipe our Stack install completely, here is
what typically needs to be removed:
1. the Stack root folder (see `stack path --stack-root`, before you uninstall);
2. if different, the folder containing Stack's global configuration file (see
`stack path --global-config`, before you uninstall);
3. on Windows, the folder containing Stack's tools (see `stack path --programs`,
before you uninstall), which is located outside of the Stack root folder; and
4. the `stack` executable file (see `which stack`, on Unix-like operating
systems, or `where.exe stack`, on Windows).
You may also want to delete `.stack-work` folders in any Haskell projects that
you have built using Stack. The `stack uninstall` command provides information
about how to uninstall Stack.