We already have seen some variables in Device parameters. But there is more to variables.
The global device is a special purpose device. It only exists as a storage for global variables. Some global variables are created internally in barebox (see Magic variables). Additional variables can be created with the global (create or set global variables) command:
global myvar
This creates the global.myvar variable which now can be used like any other variable. You can also directly assign a value during creation:
global myvar1=foobar
NOTE: creating a variable with global myvar1=foobar looks very similar to assigning a value with global.myvar1=foobar, but the latter fails when a variable has not been created before.
Some variables have special meanings and influence the behaviour of barebox. Most but not all of them are consolidated in the The global device. Since it’s hard to remember which variables these are and if the current barebox has support for them the magicvar (list information about magic variables) command can print a list of all variables with special meaning along with a short description:
barebox:/ magicvar
OPTARG optarg for hush builtin getopt
PATH colon separated list of pathes to search for executables
PS1 hush prompt
armlinux_architecture ARM machine ID
armlinux_system_rev ARM system revision
armlinux_system_serial ARM system serial
automount_path mountpath passed to automount scripts
bootargs Linux Kernel parameters
bootsource The source barebox has been booted from
bootsource_instance The instance of the source barebox has been booted from
global.boot.default default boot order
...