Global System Information

In order to write the most general Wolfram Language programs you will sometimes need to find out global information about the setup under which your program is being run.

Thus, for example, to tell whether your program should be calling functions like NotebookWrite, you need to find out whether the program is being run in a Wolfram Language session that is using the notebook front end. You can do this by testing the global variable $Notebooks.

$Notebookswhether a notebook front end is being used

Determining whether a notebook front end is being used.

The Wolfram System is usually used interactively, but it can also operate in a batch modesay taking input from a file and writing output to a file. In such a case, a program cannot for example expect to get interactive input from the user.

$BatchInputwhether input is being given in batch mode
$BatchOutputwhether output should be given in batch mode, without labeling, etc.

Variables specifying batch mode operation.

The Wolfram Language kernel is a process that runs under the operating system on your computer. Within the Wolfram Language there are several global variables that allow you to find the characteristics of this process and its environment.

$CommandLinethe original command line used to invoke the Wolfram Language kernel
$ParentLinkthe WSTP LinkObject specifying the program that invoked the kernel (or Null if the kernel was invoked directly)
$ProcessIDthe ID assigned to the Wolfram Language kernel process by the operating system
$ParentProcessIDthe ID of the process that invoked the Wolfram Language kernel
$Usernamethe login name of the user running the Wolfram Language kernel
Environment["var"]the value of a variable defined by the operating system

Variables associated with the Wolfram Language kernel process.

If you have a variable such as x in a particular Wolfram Language session, you may or may not want that variable to be the same as an x in another Wolfram Language session. In order to make it possible to maintain distinct objects in different sessions, the Wolfram Language supports the variable $SessionID, which uses information such as starting time, process ID and machine ID to try to give a different value for every single Wolfram Language session, whether it is run on the same computer or a different one.

$SessionIDa number set up to be different for every Wolfram Language session

A unique number different for every Wolfram Language session.

The Wolfram Language provides various global variables that allow you to tell which version of the kernel you are running. This is important if you write programs that make use of features that are, say, new in Version 6. You can then check $VersionNumber to find out if these features will be available.

$Versiona string giving the complete version of the Wolfram System in use
$VersionNumberthe Wolfram Language kernel version number (e.g. 11.2)
$ReleaseNumberthe release number for your version of the Wolfram Language kernel on your particular computer system
$CreationDatethe date, as a DateObject, on which your particular Wolfram System release was created

Variables specifying the version of the Wolfram System used.

The Wolfram System itself is set up to be as independent of the details of the particular computer system on which it is run as possible. However, if you want to access external aspects of your computer system, then you will often need to find out its characteristics.

$Systema full string describing the computer system in use
$SystemIDa short string specifying the computer system in use
$ProcessorTypethe architecture of the processor in your computer system
$MachineTypethe general type of your computer system
$ByteOrderingthe native byte ordering convention on your computer system
$OperatingSystemthe basic operating system in use
$SystemCharacterEncodingthe default raw character encoding used by your operating system

Variables specifying the characteristics of your computer system.

The Wolfram System uses the values of $SystemID to label directories that contain versions of files for different computer systems, as discussed in "Reading and Writing Wolfram Language Files: Files and Streams" and "Portability of WSTP Programs". Computer systems for which $SystemID is the same will normally be binary compatible.

$OperatingSystem has values such as "Windows" or "Unix". By testing $OperatingSystem you can determine whether a particular external program is likely to be available on your computer system.

This gives some characteristics of the computer system on which the input is evaluated:
Click for copyable input
$MachineAddressesthe list of current IP addresses
$MachineNamethe name of the computer on which the Wolfram System is running
$MachineDomainsthe current network domains for the computer
$MachineIDthe unique ID assigned by the Wolfram System to the computer

Variables identifying the computer on which the Wolfram System is running.

$ActivationKeythe activation key under which the Wolfram System is running
$LicenseExpirationDatethe date on which the license expires
$NetworkLicensewhether this is a network license
$LicenseServerthe full name of the machine serving the license
$LicenseProcessesthe number of Wolfram System processes currently being run under the license
$MaxLicenseProcessesthe maximum number of processes provided by the license
$PasswordFilepassword file used when the kernel was started

Variables associated with license management.