std.env

std.env exposes environment variables and command-line arguments.

Reference

get(name)     # value, or nil if unset
set(name, value)
unset(name)
all()         # object of all environment variables
args()        # command-line arguments after the script name

Examples

std.env.set("APP_MODE", "prod")
print(std.env.get("APP_MODE"))          # prod

print(std.env.get("NO_SUCH_VAR"))       # nil
print(keys(std.env.all()))              # all variable names

std.env.unset("APP_MODE")
print(std.env.get("APP_MODE"))          # nil

# command-line arguments: `scrii_repl prog.scr a b` -> ["a", "b"].
# Empty when embedded unless the host published argv via set_argv().
# Guarded engines only see args() with allow_env (argv often carries
# secrets, so default-deny applies).
var argv = std.env.args()
print("received", len(argv), "argument(s)")
for (a : argv) { print(a) }

# iterate all variables
for (k, v : std.env.all()) {
  print(k + "=" + v)
}

all() returns an object whose keys are variable names and values are their
string values. Use keys/has from Builtins to
inspect it.

See also

  • std.path — expand uses these variables
  • std.file — paths with $VAR expansion
  • std.os — std.system for spawning processes with an environment