nethack - Man Page

Exploring The Mazes of Menace


nethack [ -d directory ] [ -n ] [ -p profession ] [ -r race ] [ -[DX] ] [ -u playername ] [ -dec ] [ -ibm ] [ --showpaths ] [ --version[:paste] ]

nethack [ -d directory ] -s [ -v ] [ -p profession ] [ -r race ] [ playernames ]


NetHack is a display oriented Dungeons & Dragons(tm) - like game. The standard tty display and command structure resemble rogue.

Other, more graphical display options exist for most platforms.

To get started you really only need to know two commands.  The command ? will give you a list of the available commands (as well as other information) and the command / will identify the things you see on the screen.

To win the game (as opposed to merely playing to beat other people's high scores) you must locate the Amulet of Yendor which is somewhere below the 20th level of the dungeon and get it out. Few people achieve this; most never do.  Those who have go down in history as heroes among heroes - and then they find ways of making the game even harder.  See the Guidebook section on Conduct if this game has gotten too easy for you.

When the game ends, whether by your dying, quitting, or escaping from the caves, NetHack will give you (a fragment of) the list of top scorers. The scoring is based on many aspects of your behavior, but a rough estimate is obtained by taking the amount of gold you've found in the cave plus four times your (real) experience. Precious stones may be worth a lot of gold when brought to the exit. There is a 10% penalty for getting yourself killed.

The environment variable NETHACKOPTIONS can be used to initialize many run-time options. The ? command provides a description of these options and syntax. (The -dec and -ibm command line options are equivalent to the decgraphics and ibmgraphics run-time options described there, and are provided purely for convenience on systems supporting multiple types of terminals.)

Because the option list can be very long (particularly when specifying graphics characters), options may also be included in a configuration file. The default is located in your home directory and named .nethackrc on Unix systems.  On other systems, the default may be different, usually NetHack.cnf.  On DOS or Windows, the name is defaults.nh, while on the Macintosh or BeOS, it is NetHack Defaults. The configuration file's location may be specified by setting NETHACKOPTIONS to a string consisting of an @ character followed by the filename.

The -u playername option supplies the answer to the question "Who are you?". It overrides any name from the options or configuration file, USER, LOGNAME, or getlogin(), which will otherwise be tried in order. If none of these provides a useful name, the player will be asked for one. Player names (in conjunction with uids) are used to identify save files, so you can have several saved games under different names. Conversely, you must use the appropriate player name to restore a saved game.

A playername suffix can be used to specify the profession, race, alignment and/or gender of the character.  The full syntax of the playername that includes a suffix is "name-ppp-rrr-aaa-ggg".  "ppp" are at least the first three letters of the profession (this can also be specified using a separate -p profession option).  "rrr" are at least the first three letters of the character's race (this can also be specified using a separate -r race option).  "aaa" are at least the first three letters of the character's alignment, and "ggg" are at least the first three letters of the character's gender.  Any of the parts of the suffix may be left out.

-p profession can be used to determine the character profession, also known as the role. You can specify either the male or female name for the character role, or the first three characters of the role as an abbreviation. -p @ has been retained to explicitly request that a random role be chosen. It may need to be quoted with a backslash (\@) if @ is the "kill" character (see "stty") for the terminal, in order to prevent the current input line from being cleared.

Likewise, -r race can be used to explicitly request that a race be chosen.

Leaving out any of these characteristics will result in you being prompted during the game startup for the information.

The -s option alone will print out the list of your scores on the current version. An immediately following -v reports on all versions present in the score file. The -s may also be followed by arguments -p and -r to print the scores of particular roles and races only. It may also be followed by one or more player names to print the scores of the players mentioned, by 'all' to print out all scores, or by a number to print that many top scores.

The -n option suppresses printing of any news from the game administrator.

The -D or -X option will start the game in a special non-scoring discovery mode. -D will, if the player is the game administrator, start in debugging (wizard) mode instead.

The -d option, which must be the first argument if it appears, supplies a directory which is to serve as the playground. It overrides the value from NETHACKDIR, HACKDIR, or the directory specified by the game administrator during compilation (usually /usr/games/nethack). This option is usually only useful to the game administrator. The playground must contain several auxiliary files such as help files, the list of top scorers, and a subdirectory save where games are saved.

--showpaths can be used to cause NetHack to show where it is expecting to find various configuration files.

--version can be used to cause NetHack to show the version information it was compiled with, then exit. That will include the git commit hash if the information was available when the game was compiled. On some platforms, such as windows and macosx, a variation --version:paste can be used to cause NetHack to show the version information, then exit, while also leaving a copy of the version information in the paste buffer  or clipboard for potential insertion into things like bug reports.


Jay Fenlason (+ Kenny Woodland, Mike Thome and Jon Payne) wrote the original hack, very much like rogue (but full of bugs).

Andries Brouwer continuously deformed their sources into an entirely different game.

Mike Stephenson has continued the perversion of sources, adding various warped character classes and sadistic traps with the help of many strange people who reside in that place between the worlds, the Usenet Zone. A number of these miscreants are immortalized in the historical roll of dishonor and various other places.

The resulting mess is now called NetHack, to denote its development by the Usenet.  Andries Brouwer has made this request for the distinction, as he may eventually release a new version of his own.


Run-time configuration options were discussed above and use a platform specific name for a file in a platform specific location.  For Unix, the name is '.nethackrc' in the user's home directory.

All other files are in the playground directory, normally /usr/games/nethack. If DLB was defined during the compile, the data files and special levels will be inside a larger file, normally nhdat, instead of being separate files.

nethackThe program itself.
data, oracles, rumorsData files used by NetHack.
quest.dat, bogusmonMore data files.
engrave, epitaph, tributeStill more data files.
symbolsData file holding sets of specifications

for how to display monsters, objects, and
map features.
options Data file containing a description of the build-time option settings.

help, hhHelp data files.
cmdhelp, opthelp, wizhelpMore help data files.
*.levPredefined special levels.
dungeonControl file for special levels.
historyA short history of NetHack.
licenseRules governing redistribution.
recordThe list of top scorers.
logfileAn extended list of games played

xlogfile A more detailed version of 'logfile'
(also optional).
paniclog Record of exceptional conditions
discovered during program execution.
xlock.nn Description of dungeon level 'nn' of
active game 'x' if there's a limit on the
number of simultaneously active games.
UUcccccc.nn Alternate form for dungeon level 'nn'
of active game by user 'UU' playing
character named 'cccccc' when there's no
limit on number of active games.

permLock file for xlock.0 or UUcccccc.0.
bonesDD.nnDescriptions of the ghost and belongings

of a deceased adventurer who met his
or her demise on level 'nn'.

save/ A subdirectory containing saved games.

sysconf System-wide options.  Required if
program is built with 'SYSCF' option
enabled, ignored if not.

The location of 'sysconf' is specified at build time and can't be changed except by updating source file "config.h" and rebuilding the program.

In a perfect world, 'paniclog' would remain empty.


USER or LOGNAMEYour login name.
HOMEYour home directory.
SHELLYour shell.
TERMThe type of your terminal.
HACKPAGER or PAGERReplacement for default pager.
MAILMailbox file.
MAILREADERReplacement for default reader

(probably /bin/mail or /usr/ucb/mail).

NETHACKOPTIONSString predefining several NetHack


If the same option is specified in both NETHACKOPTIONS and .nethackrc, the value assigned in NETHACKOPTIONS takes precedence.

SHOPTYPE and SPLEVTYPE can be used in debugging (wizard) mode.
DEBUGFILES can be used if the program was built with 'DEBUG' enabled.

See Also

dgn_comp(6), lev_comp(6), recover(6)


Probably infinite.

Referenced By

angband(6), dgn_comp(6), dlb(6), lev_comp(6), recover(6), scanmem(1), slashem-recover(6), vulturesclaw-recover(6), vultureseye-recover(6).

2 February 2018 NETHACK