1.. SPDX-License-Identifier: GPL-2.0-or-later:
2
3env command
4===========
5
6Synopsis
7--------
8
9::
10
11	env ask name [message] [size]
12	env callbacks
13	env default [-f] (-a | var [...])
14	env delete [-f] var [...]
15	env edit name
16	env exists name
17	env export [-t | -b | -c] [-s size] addr [var ...]
18	env flags
19	env grep [-e] [-n | -v | -b] string [...]
20	env import [-d] [-t [-r] | -b | -c] addr [size] [var ...]
21	env info [-d] [-p] [-q]
22	env print [-a | name ...]
23	env print -e [-guid guid] [-n] [name ...]
24	env run var [...]
25	env save
26	env erase
27	env load
28	env select [target]
29	env set [-f] name [value]
30	env set -e [-nv][-bs][-rt][-at][-a][-i addr:size][-v] name [value]
31
32Description
33-----------
34
35The *env* commands is used to handle the U-Boot (:doc:`../environment`) or
36the UEFI variables.
37
38The next commands are kept as alias and for compatibility:
39
40+ *editenv* = *env edit*
41+ *grepenv* = *env grep*
42+ *setenv* = *env set*
43+ *askenv* = *env ask*
44+ *run* = *env run*
45
46Ask
47~~~
48
49The *env ask* command asks for the new value of an environment variable
50(alias :doc:`askenv`).
51
52    name
53        name of the environment variable.
54
55    message
56        message to be displayed while the command waits for the value to be
57        entered from stdin. If no message is specified, a default message
58        "Please enter name:" will be displayed.
59
60    size
61        maximum number of characters that will be stored in the environment
62        variable name. This is in decimal number format (unlike in
63        other commands where size values are hexa-decimal). The default
64        value of size is 1023 (CONFIG_SYS_CBSIZE - 1).
65
66Callbacks
67~~~~~~~~~
68
69The *env callbacks* command prints callbacks and their associated variables.
70
71Default
72~~~~~~~
73
74The *env default* command resets the selected variables in the U-Boot
75environment to their default values.
76
77    var
78        list of variable name.
79    \-a
80        all U-Boot environment.
81    \-f
82        forcibly, overwrite read-only/write-once variables.
83
84Delete
85~~~~~~
86
87The *env delete* command deletes the selected variables from the U-Boot
88environment.
89
90    var
91        name of the variable to delete.
92    \-f
93        forcibly, overwrite read-only/write-once variables.
94
95Edit
96~~~~
97
98The *env edit* command edits an environment variable.
99
100    name
101        name of the variable.
102
103Exists
104~~~~~~
105
106The *env exists* command tests for existence of variable.
107
108    name
109        name of the variable.
110
111Export
112~~~~~~
113
114The *env export* command exports the U-Boot environment in memory; on success,
115the variable $filesize will be set.
116
117    addr
118        memory address where environment gets stored.
119    var
120        list of variable names that get included into the export.
121        Without arguments, the whole environment gets exported.
122    \-b
123        export as binary format (name=value pairs separated by
124        list end marked by double "\0\0").
125    \-t
126        export as text format; if size is given, data will be
127        padded with '\0' bytes; if not, one terminating '\0'
128        will be added.
129    \-c
130        Export as checksum protected environment format as used by
131        'env save' command.
132    \-s size
133        size of output buffer.
134
135Flags
136~~~~~
137
138The *env flags* command prints variables that have non-default flags.
139
140Grep
141~~~~
142
143The *env grep* command searches environment, list environment name=value pairs
144matching the requested 'string'.
145
146    string
147        string to search in U-Boot environment.
148    \-e
149        enable regular expressions.
150    \-n
151        search string in variable names.
152    \-v
153        search string in vairable values.
154    \-b
155        search both names and values (default).
156
157Import
158~~~~~~
159
160The *env import* command imports environment from memory.
161
162    addr
163        memory address to read from.
164    size
165        length of input data; if missing, proper '\0' termination is mandatory
166        if var is set and size should be missing (i.e. '\0' termination),
167        set size to '-'.
168    var
169        List of the names of the only variables that get imported from
170        the environment at address 'addr'. Without arguments, the whole
171        environment gets imported.
172    \-d
173        delete existing environment before importing if no var is passed;
174        if vars are passed, if one var is in the current environment but not
175        in the environment at addr, delete var from current environment;
176        otherwise overwrite / append to existing definitions.
177    \-t
178        assume text format; either "size" must be given or the text data must
179        be '\0' terminated.
180    \-r
181        handle CRLF like LF, that means exported variables with a content which
182        ends with \r won't get imported. Used to import text files created with
183        editors which are using CRLF for line endings.
184        Only effective in addition to -t.
185    \-b
186        assume binary format ('\0' separated, "\0\0" terminated).
187    \-c
188        assume checksum protected environment format.
189
190Info
191~~~~
192
193The *env info* command displays (without argument) or evaluates the U-Boot
194environment information.
195
196    \-d
197        evaluate if the default environment is used.
198    \-p
199        evaluate if environment can be persisted.
200    \-q
201        quiet output,  use only for command result, by example with
202        'test' command.
203
204Print
205~~~~~
206
207The *env print* command prints the selected variables in U-Boot environment or
208in UEFI variables.
209
210    name
211        list of variable name.
212    \-a
213        all U-Boot environment, when 'name' is absent.
214    \-e
215        print UEFI variables, all by default when 'name'.
216    \-guid guid
217        print only the UEFI variables matching this GUID (any by default)
218        with guid format = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".
219    \-n
220         suppress dumping variable's value for UEFI.
221
222Run
223~~~
224
225The *env run* command runs commands in an environment variable.
226
227    var
228        name of the variable.
229
230Save
231~~~~
232
233The *env save* command saves the U-Boot environment in persistent storage.
234
235Erase
236~~~~~
237
238The *env erase* command erases the U-Boot environment.
239
240Load
241~~~~
242
243The *env load* command loads the U-Boot environment from persistent storage.
244
245Select
246~~~~~~
247
248The *env select* command selects an U-Boot environment target, it is useful to
249overid the default location when several U-Boot environment backend are
250availables.
251
252    target
253        name of the U-Boot environment backend to select: EEPROM, EXT4, FAT,
254        Flash, MMC, NAND, nowhere, NVRAM, OneNAND, Remote, SATA, SPIFlash, UBI.
255
256
257Set
258~~~
259
260The *env set* command sets or delete (when 'value' or '-i' are absent)
261U-Boot variable in environment or UEFI variables (when -e is specified).
262
263    name
264        variable name to modify.
265    value
266        when present, set the environment variable 'name' to 'value'
267        when absent, delete the environment variable 'name'.
268    \-f
269        forcibly, overwrite read-only/write-once U-Boot variables.
270    \-e
271        update UEFI variables.
272    \-nv
273        set non-volatile attribute (UEFI).
274    \-bs
275        set boot-service attribute (UEFI).
276    \-rt
277        set runtime attribute (UEFI).
278    \-at
279        set time-based authentication attribute (UEFI).
280    \-a
281        append-write (UEFI).
282    \-i addr:size
283        use <addr,size> as variable's value (UEFI).
284    \-v
285        verbose message (UEFI).
286
287Example
288-------
289
290Print the U-Boot environment variables::
291
292    => env print -a
293    => env print bootcmd stdout
294
295Update environment variable in memory::
296
297    => env set bootcmd "run distro_bootcmd"
298    => env set stdout "serial,vidconsole"
299
300Delete environment variable in memory::
301
302    => env delete bootcmd
303    => env set bootcmd
304
305Reset environment variable to default value, in memory::
306
307    => env default bootcmd
308    => env default -a
309
310Save current environment in persistent storage::
311
312    => env save
313
314Restore the default environment in persistent storage::
315
316    => env erase
317
318Create a text snapshot/backup of the current settings in RAM
319(${filesize} can be use to save the snapshot in file)::
320
321    => env export -t ${backup_addr}
322
323Re-import this snapshot, deleting all other settings::
324
325    => env import -d -t ${backup_addr}
326
327Save environment if default enviromnent is used and persistent storage is
328selected::
329
330    => if env info -p -d -q; then env save; fi
331
332Configuration
333-------------
334
335The env command is always available but some sub-commands depend on
336configuration options:
337
338ask
339    CONFIG_CMD_ASKENV
340
341callback
342    CONFIG_CMD_ENV_CALLBACK
343
344edit
345    CONFIG_CMD_EDITENV
346
347exists
348    CONFIG_CMD_ENV_EXISTS
349
350flsgs
351    CONFIG_CMD_ENV_FLAGS
352
353erase
354    CONFIG_CMD_ERASEENV
355
356export
357    CONFIG_CMD_EXPORTENV
358
359grep
360    CONFIG_CMD_GREPENV, CONFIG_REGEX for '-e' option
361
362import
363    CONFIG_CMD_IMPORTENV
364
365info
366    CONFIG_CMD_NVEDIT_INFO
367
368load
369    CONFIG_CMD_NVEDIT_LOAD
370
371run
372    CONFIG_CMD_RUN
373
374save
375    CONFIG_CMD_SAVEENV
376
377select
378    CONFIG_CMD_NVEDIT_SELECT
379
380set, print
381    CONFIG_CMD_NVEDIT_EFI for '-e' option
382