generator: Generate guestfish-only commands.
[libguestfs.git] / fish / guestfish.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 guestfish - the libguestfs Filesystem Interactive SHell
6
7 =head1 SYNOPSIS
8
9  guestfish [--options] [commands]
10
11  guestfish
12
13  guestfish -a disk.img
14
15  guestfish -a disk.img -m dev[:mountpoint]
16
17  guestfish -d libvirt-domain
18
19  guestfish -a disk.img -i
20
21  guestfish -d libvirt-domain -i
22
23 =head1 WARNING
24
25 Using guestfish in read/write mode on live virtual machines can be
26 dangerous, potentially causing disk corruption.  Use the I<--ro>
27 (read-only) option to use guestfish safely if the disk image or
28 virtual machine might be live.
29
30 =head1 EXAMPLES
31
32 =head2 As an interactive shell
33
34  $ guestfish
35  
36  Welcome to guestfish, the libguestfs filesystem interactive shell for
37  editing virtual machine filesystems.
38  
39  Type: 'help' for a list of commands
40        'man' to read the manual
41        'quit' to quit the shell
42  
43  ><fs> man
44
45 =head2 From shell scripts
46
47 Create a new C</etc/motd> file in a guest:
48
49  guestfish <<_EOF_
50  add disk.img
51  run
52  mount /dev/vg_guest/lv_root /
53  write /etc/motd "Welcome, new users"
54  _EOF_
55
56 List the LVM logical volumes in a guest:
57
58  guestfish -a disk.img --ro <<_EOF_
59  run
60  lvs
61  _EOF_
62
63 =head2 On one command line
64
65 Update C</etc/resolv.conf> in a guest:
66
67  guestfish \
68    add disk.img : run : mount /dev/vg_guest/lv_root / : \
69    write /etc/resolv.conf "nameserver 1.2.3.4"
70
71 Edit C</boot/grub/grub.conf> interactively:
72
73  guestfish --add disk.img \
74    --mount /dev/vg_guest/lv_root \
75    --mount /dev/sda1:/boot \
76    edit /boot/grub/grub.conf
77
78 =head2 Mount disks automatically
79
80 Use the I<-i> option to automatically mount the
81 disks from a virtual machine:
82
83  guestfish --ro -a disk.img -i cat /etc/group
84
85  guestfish --ro -d libvirt-domain -i cat /etc/group
86
87 =head2 As a script interpreter
88
89 Create a 100MB disk containing an ext2-formatted partition:
90
91  #!/usr/bin/guestfish -f
92  sparse test1.img 100M
93  run
94  part-disk /dev/sda mbr
95  mkfs ext2 /dev/sda1
96
97 =head2 Start with a prepared disk
98
99 An alternate way to create a 100MB disk called C<test1.img> containing
100 a single ext2-formatted partition:
101
102  guestfish -N fs
103
104 To list what is available do:
105
106  guestfish -N help | less
107
108 =head2 Remote control
109
110  eval `guestfish --listen --ro`
111  guestfish --remote add disk.img
112  guestfish --remote run
113  guestfish --remote lvs
114
115 =head1 DESCRIPTION
116
117 Guestfish is a shell and command-line tool for examining and modifying
118 virtual machine filesystems.  It uses libguestfs and exposes all of
119 the functionality of the guestfs API, see L<guestfs(3)>.
120
121 Guestfish gives you structured access to the libguestfs API, from
122 shell scripts or the command line or interactively.  If you want to
123 rescue a broken virtual machine image, you should look at the
124 L<virt-rescue(1)> command.
125
126 =head1 OPTIONS
127
128 =over 4
129
130 =item B<--help>
131
132 Displays general help on options.
133
134 =item B<-h> | B<--cmd-help>
135
136 Lists all available guestfish commands.
137
138 =item B<-h cmd> | B<--cmd-help cmd>
139
140 Displays detailed help on a single command C<cmd>.
141
142 =item B<-a image> | B<--add image>
143
144 Add a block device or virtual machine image to the shell.
145
146 =item B<-c URI> | B<--connect URI>
147
148 When used in conjunction with the I<-d> option, this specifies
149 the libvirt URI to use.  The default is to use the default libvirt
150 connection.
151
152 =item B<-d libvirt-domain> | B<--domain libvirt-domain>
153
154 Add disks from the named libvirt domain.  If the I<--ro> option is
155 also used, then any libvirt domain can be used.  However in write
156 mode, only libvirt domains which are shut down can be named here.
157
158 =item B<-D> | B<--no-dest-paths>
159
160 Don't tab-complete paths on the guest filesystem.  It is useful to be
161 able to hit the tab key to complete paths on the guest filesystem, but
162 this causes extra "hidden" guestfs calls to be made, so this option is
163 here to allow this feature to be disabled.
164
165 =item B<-f file> | B<--file file>
166
167 Read commands from C<file>.  To write pure guestfish
168 scripts, use:
169
170  #!/usr/bin/guestfish -f
171
172 =item B<-i> | B<--inspector>
173
174 Using L<virt-inspector(1)> code, inspect the disks looking for
175 an operating system and mount filesystems as they would be
176 mounted on the real virtual machine.
177
178 Typical usage is either:
179
180  guestfish -d myguest -i
181
182 (for an inactive libvirt domain called I<myguest>), or:
183
184  guestfish --ro -d myguest -i
185
186 (for active domains, readonly), or specify the block device directly:
187
188  guestfish -a /dev/Guests/MyGuest -i
189
190 Note that the command line syntax changed slightly over older
191 versions of guestfish.  You can still use the old syntax:
192
193  guestfish [--ro] -i disk.img
194
195  guestfish [--ro] -i libvirt-domain
196
197 =item B<--keys-from-stdin>
198
199 Read key or passphrase parameters from stdin.  The default is
200 to try to read passphrases from the user by opening C</dev/tty>.
201
202 =item B<--listen>
203
204 Fork into the background and listen for remote commands.  See section
205 L</REMOTE CONTROL GUESTFISH OVER A SOCKET> below.
206
207 =item B<-m dev[:mountpoint]> | B<--mount dev[:mountpoint]>
208
209 Mount the named partition or logical volume on the given mountpoint.
210
211 If the mountpoint is omitted, it defaults to C</>.
212
213 You have to mount something on C</> before most commands will work.
214
215 If any I<-m> or I<--mount> options are given, the guest is
216 automatically launched.
217
218 If you don't know what filesystems a disk image contains, you
219 can either run guestfish without this option, then list the partitions
220 and LVs available (see L</list-partitions> and L</lvs> commands),
221 or you can use the L<virt-list-filesystems(1)> program.
222
223 =item B<-n> | B<--no-sync>
224
225 Disable autosync.  This is enabled by default.  See the discussion
226 of autosync in the L<guestfs(3)> manpage.
227
228 =item B<-N type> | B<--new type> | B<-N help>
229
230 Prepare a fresh disk image formatted as "type".  This is an
231 alternative to the I<-a> option: whereas I<-a> adds an existing disk,
232 I<-N> creates a preformatted disk with a filesystem and adds it.
233 See L</PREPARED DISK IMAGES> below.
234
235 =item B<--progress-bars>
236
237 Enable progress bars, even when guestfish is used non-interactively.
238
239 Progress bars are enabled by default when guestfish is used as an
240 interactive shell.
241
242 =item B<--no-progress-bars>
243
244 Disable progress bars.
245
246 =item B<--remote[=pid]>
247
248 Send remote commands to C<$GUESTFISH_PID> or C<pid>.  See section
249 L</REMOTE CONTROL GUESTFISH OVER A SOCKET> below.
250
251 =item B<-r> | B<--ro>
252
253 This changes the I<-a> and I<-m> options so that disks are added and
254 mounts are done read-only (see L<guestfs(3)/guestfs_mount_ro>).
255
256 The option must always be used if the disk image or virtual machine
257 might be running, and is generally recommended in cases where you
258 don't need write access to the disk.
259
260 Note that prepared disk images created with I<-N> are not affected by
261 the I<--ro> option.
262
263 =item B<--selinux>
264
265 Enable SELinux support for the guest.  See L<guestfs(3)/SELINUX>.
266
267 =item B<-v> | B<--verbose>
268
269 Enable very verbose messages.  This is particularly useful if you find
270 a bug.
271
272 =item B<-V> | B<--version>
273
274 Display the guestfish / libguestfs version number and exit.
275
276 =item B<-x>
277
278 Echo each command before executing it.
279
280 =back
281
282 =head1 COMMANDS ON COMMAND LINE
283
284 Any additional (non-option) arguments are treated as commands to
285 execute.
286
287 Commands to execute should be separated by a colon (C<:>), where the
288 colon is a separate parameter.  Thus:
289
290  guestfish cmd [args...] : cmd [args...] : cmd [args...] ...
291
292 If there are no additional arguments, then we enter a shell, either an
293 interactive shell with a prompt (if the input is a terminal) or a
294 non-interactive shell.
295
296 In either command line mode or non-interactive shell, the first
297 command that gives an error causes the whole shell to exit.  In
298 interactive mode (with a prompt) if a command fails, you can continue
299 to enter commands.
300
301 =head1 USING launch (OR run)
302
303 As with L<guestfs(3)>, you must first configure your guest by adding
304 disks, then launch it, then mount any disks you need, and finally
305 issue actions/commands.  So the general order of the day is:
306
307 =over 4
308
309 =item *
310
311 add or -a/--add
312
313 =item *
314
315 launch (aka run)
316
317 =item *
318
319 mount or -m/--mount
320
321 =item *
322
323 any other commands
324
325 =back
326
327 C<run> is a synonym for C<launch>.  You must C<launch> (or C<run>)
328 your guest before mounting or performing any other commands.
329
330 The only exception is that if the I<-m> or I<--mount> option was
331 given, the guest is automatically run for you (simply because
332 guestfish can't mount the disks you asked for without doing this).
333
334 =head1 QUOTING
335
336 You can quote ordinary parameters using either single or double
337 quotes.  For example:
338
339  add "file with a space.img"
340
341  rm '/file name'
342
343  rm '/"'
344
345 A few commands require a list of strings to be passed.  For these, use
346 a whitespace-separated list, enclosed in quotes.  Strings containing whitespace
347 to be passed through must be enclosed in single quotes.  A literal single quote
348 must be escaped with a backslash.
349
350  vgcreate VG "/dev/sda1 /dev/sdb1"
351  command "/bin/echo 'foo      bar'"
352  command "/bin/echo \'foo\'"
353
354 =head1 NUMBERS
355
356 This section applies to all commands which can take integers
357 as parameters.
358
359 =head2 SIZE SUFFIX
360
361 When the command takes a parameter measured in bytes, you can use one
362 of the following suffixes to specify kilobytes, megabytes and larger
363 sizes:
364
365 =over 4
366
367 =item B<k> or B<K> or B<KiB>
368
369 The size in kilobytes (multiplied by 1024).
370
371 =item B<KB>
372
373 The size in SI 1000 byte units.
374
375 =item B<M> or B<MiB>
376
377 The size in megabytes (multiplied by 1048576).
378
379 =item B<MB>
380
381 The size in SI 1000000 byte units.
382
383 =item B<G> or B<GiB>
384
385 The size in gigabytes (multiplied by 2**30).
386
387 =item B<GB>
388
389 The size in SI 10**9 byte units.
390
391 =item B<T> or B<TiB>
392
393 The size in terabytes (multiplied by 2**40).
394
395 =item B<TB>
396
397 The size in SI 10**12 byte units.
398
399 =item B<P> or B<PiB>
400
401 The size in petabytes (multiplied by 2**50).
402
403 =item B<PB>
404
405 The size in SI 10**15 byte units.
406
407 =item B<E> or B<EiB>
408
409 The size in exabytes (multiplied by 2**60).
410
411 =item B<EB>
412
413 The size in SI 10**18 byte units.
414
415 =item B<Z> or B<ZiB>
416
417 The size in zettabytes (multiplied by 2**70).
418
419 =item B<ZB>
420
421 The size in SI 10**21 byte units.
422
423 =item B<Y> or B<YiB>
424
425 The size in yottabytes (multiplied by 2**80).
426
427 =item B<YB>
428
429 The size in SI 10**24 byte units.
430
431 =back
432
433 For example:
434
435  truncate-size /file 1G
436
437 would truncate the file to 1 gigabyte.
438
439 Be careful because a few commands take sizes in kilobytes or megabytes
440 (eg. the parameter to L</memsize> is specified in megabytes already).
441 Adding a suffix will probably not do what you expect.
442
443 =head2 OCTAL AND HEXADECIMAL NUMBERS
444
445 For specifying the radix (base) use the C convention: C<0> to prefix
446 an octal number or C<0x> to prefix a hexadecimal number.  For example:
447
448  1234      decimal number 1234
449  02322     octal number, equivalent to decimal 1234
450  0x4d2     hexadecimal number, equivalent to decimal 1234
451
452 When using the C<chmod> command, you almost always want to specify an
453 octal number for the mode, and you must prefix it with C<0> (unlike
454 the Unix L<chmod(1)> program):
455
456  chmod 0777 /public  # OK
457  chmod 777 /public   # WRONG! This is mode 777 decimal = 01411 octal.
458
459 Commands that return numbers usually print them in decimal, but
460 some commands print numbers in other radices (eg. C<umask> prints
461 the mode in octal, preceeded by C<0>).
462
463 =head1 WILDCARDS AND GLOBBING
464
465 Neither guestfish nor the underlying guestfs API performs
466 wildcard expansion (globbing) by default.  So for example the
467 following will not do what you expect:
468
469  rm-rf /home/*
470
471 Assuming you don't have a directory literally called C</home/*>
472 then the above command will return an error.
473
474 To perform wildcard expansion, use the C<glob> command.
475
476  glob rm-rf /home/*
477
478 runs C<rm-rf> on each path that matches (ie. potentially running
479 the command many times), equivalent to:
480
481  rm-rf /home/jim
482  rm-rf /home/joe
483  rm-rf /home/mary
484
485 C<glob> only works on simple guest paths and not on device names.
486
487 If you have several parameters, each containing a wildcard, then glob
488 will perform a cartesian product.
489
490 =head1 COMMENTS
491
492 Any line which starts with a I<#> character is treated as a comment
493 and ignored.  The I<#> can optionally be preceeded by whitespace,
494 but B<not> by a command.  For example:
495
496  # this is a comment
497          # this is a comment
498  foo # NOT a comment
499
500 Blank lines are also ignored.
501
502 =head1 RUNNING COMMANDS LOCALLY
503
504 Any line which starts with a I<!> character is treated as a command
505 sent to the local shell (C</bin/sh> or whatever L<system(3)> uses).
506 For example:
507
508  !mkdir local
509  tgz-out /remote local/remote-data.tar.gz
510
511 will create a directory C<local> on the host, and then export
512 the contents of C</remote> on the mounted filesystem to
513 C<local/remote-data.tar.gz>.  (See C<tgz-out>).
514
515 To change the local directory, use the C<lcd> command.  C<!cd> will
516 have no effect, due to the way that subprocesses work in Unix.
517
518 =head1 PIPES
519
520 Use C<command E<lt>spaceE<gt> | command> to pipe the output of the
521 first command (a guestfish command) to the second command (any host
522 command).  For example:
523
524  cat /etc/passwd | awk -F: '$3 == 0 { print }'
525
526 (where C<cat> is the guestfish cat command, but C<awk> is the host awk
527 program).  The above command would list all accounts in the guest
528 filesystem which have UID 0, ie. root accounts including backdoors.
529 Other examples:
530
531  hexdump /bin/ls | head
532  list-devices | tail -1
533  tgz-out / - | tar ztf -
534
535 The space before the pipe symbol is required, any space after the pipe
536 symbol is optional.  Everything after the pipe symbol is just passed
537 straight to the host shell, so it can contain redirections, globs and
538 anything else that makes sense on the host side.
539
540 To use a literal argument which begins with a pipe symbol, you have
541 to quote it, eg:
542
543  echo "|"
544
545 =head1 HOME DIRECTORIES
546
547 If a parameter starts with the character C<~> then the tilde may be
548 expanded as a home directory path (either C<~> for the current user's
549 home directory, or C<~user> for another user).
550
551 Note that home directory expansion happens for users known I<on the
552 host>, not in the guest filesystem.
553
554 To use a literal argument which begins with a tilde, you have to quote
555 it, eg:
556
557  echo "~"
558
559 =head1 ENCRYPTED DISKS
560
561 Libguestfs has some support for Linux guests encrypted according to
562 the Linux Unified Key Setup (LUKS) standard, which includes nearly all
563 whole disk encryption systems used by modern Linux guests.  Currently
564 only LVM-on-LUKS is supported.
565
566 Identify encrypted block devices and partitions using L</vfs-type>:
567
568  ><fs> vfs-type /dev/sda2
569  crypto_LUKS
570
571 Then open those devices using L</luks-open>.  This creates a
572 device-mapper device called C</dev/mapper/luksdev>.
573
574  ><fs> luks-open /dev/sda2 luksdev
575  Enter key or passphrase ("key"): <enter the passphrase>
576
577 Finally you have to tell LVM to scan for volume groups on
578 the newly created mapper device:
579
580  ><fs> vgscan
581  ><fs> vg-activate-all true
582
583 The logical volume(s) can now be mounted in the usual way.
584
585 Before closing a LUKS device you must unmount any logical volumes on
586 it and deactivate the volume groups by calling C<vg-activate false VG>
587 on each one.  Then you can close the mapper device:
588
589  ><fs> vg-activate false /dev/VG
590  ><fs> luks-close /dev/mapper/luksdev
591
592 =head1 WINDOWS PATHS
593
594 If a path is prefixed with C<win:> then you can use Windows-style
595 paths (with some limitations).  The following commands are equivalent:
596
597  file /WINDOWS/system32/config/system.LOG
598
599  file win:/windows/system32/config/system.log
600
601  file win:\windows\system32\config\system.log
602
603  file WIN:C:\Windows\SYSTEM32\conFIG\SYSTEM.LOG
604
605 This syntax implicitly calls C<case-sensitive-path> (q.v.) so it also
606 handles case insensitivity like Windows would.  This only works in
607 argument positions that expect a path.
608
609 =head1 UPLOADING AND DOWNLOADING FILES
610
611 For commands such as C<upload>, C<download>, C<tar-in>, C<tar-out> and
612 others which upload from or download to a local file, you can use the
613 special filename C<-> to mean "from stdin" or "to stdout".  For example:
614
615  upload - /foo
616
617 reads stdin and creates from that a file C</foo> in the disk image,
618 and:
619
620  tar-out /etc - | tar tf -
621
622 writes the tarball to stdout and then pipes that into the external
623 "tar" command (see L</PIPES>).
624
625 When using C<-> to read from stdin, the input is read up to the end of
626 stdin.  You can also use a special "heredoc"-like syntax to read up to
627 some arbitrary end marker:
628
629  upload -<<END /foo
630  input line 1
631  input line 2
632  input line 3
633  END
634
635 Any string of characters can be used instead of C<END>.  The end
636 marker must appear on a line of its own, without any preceeding or
637 following characters (not even spaces).
638
639 Note that the C<-E<lt>E<lt>> syntax only applies to parameters used to
640 upload local files (so-called "FileIn" parameters in the generator).
641
642 =head1 EXIT ON ERROR BEHAVIOUR
643
644 By default, guestfish will ignore any errors when in interactive mode
645 (ie. taking commands from a human over a tty), and will exit on the
646 first error in non-interactive mode (scripts, commands given on the
647 command line).
648
649 If you prefix a command with a I<-> character, then that command will
650 not cause guestfish to exit, even if that (one) command returns an
651 error.
652
653 =head1 REMOTE CONTROL GUESTFISH OVER A SOCKET
654
655 Guestfish can be remote-controlled over a socket.  This is useful
656 particularly in shell scripts where you want to make several different
657 changes to a filesystem, but you don't want the overhead of starting
658 up a guestfish process each time.
659
660 Start a guestfish server process using:
661
662  eval `guestfish --listen`
663
664 and then send it commands by doing:
665
666  guestfish --remote cmd [...]
667
668 To cause the server to exit, send it the exit command:
669
670  guestfish --remote exit
671
672 Note that the server will normally exit if there is an error in a
673 command.  You can change this in the usual way.  See section
674 L</EXIT ON ERROR BEHAVIOUR>.
675
676 =head2 CONTROLLING MULTIPLE GUESTFISH PROCESSES
677
678 The C<eval> statement sets the environment variable C<$GUESTFISH_PID>,
679 which is how the I<--remote> option knows where to send the commands.
680 You can have several guestfish listener processes running using:
681
682  eval `guestfish --listen`
683  pid1=$GUESTFISH_PID
684  eval `guestfish --listen`
685  pid2=$GUESTFISH_PID
686  ...
687  guestfish --remote=$pid1 cmd
688  guestfish --remote=$pid2 cmd
689
690 =head2 REMOTE CONTROL DETAILS
691
692 Remote control happens over a Unix domain socket called
693 C</tmp/.guestfish-$UID/socket-$PID>, where C<$UID> is the effective
694 user ID of the process, and C<$PID> is the process ID of the server.
695
696 Guestfish client and server versions must match exactly.
697
698 =head1 PREPARED DISK IMAGES
699
700 Use the I<-N type> or I<--new type> parameter to select one of a set
701 of preformatted disk images that guestfish can make for you to save
702 typing.  This is particularly useful for testing purposes.  This
703 option is used instead of the I<-a> option, and like I<-a> can appear
704 multiple times (and can be mixed with I<-a>).
705
706 The new disk is called C<test1.img> for the first I<-N>, C<test2.img>
707 for the second and so on.  Existing files in the current directory are
708 I<overwritten>.
709
710 The type briefly describes how the disk should be sized, partitioned,
711 how filesystem(s) should be created, and how content should be added.
712 Optionally the type can be followed by extra parameters, separated by
713 C<:> (colon) characters.  For example, I<-N fs> creates a default
714 100MB, sparsely-allocated disk, containing a single partition, with
715 the partition formatted as ext2.  I<-N fs:ext4:1G> is the same, but
716 for an ext4 filesystem on a 1GB disk instead.
717
718 To list the available types and any extra parameters they take, run:
719
720  guestfish -N help | less
721
722 Note that the prepared filesystem is not mounted.  You would usually
723 have to use the C<mount /dev/sda1 /> command or add the
724 I<-m /dev/sda1> option.
725
726 If any I<-N> or I<--new> options are given, the guest is automatically
727 launched.
728
729 =head2 EXAMPLES
730
731 Create a 100MB disk with an ext4-formatted partition:
732
733  guestfish -N fs:ext4
734
735 Create a 32MB disk with a VFAT-formatted partition, and mount it:
736
737  guestfish -N fs:vfat:32M -m /dev/sda1
738
739 Create a blank 200MB disk:
740
741  guestfish -N disk:200M
742
743 =head1 PROGRESS BARS
744
745 Some (not all) long-running commands send progress notification
746 messages as they are running.  Guestfish turns these messages into
747 progress bars.
748
749 When a command that supports progress bars takes longer than two
750 seconds to run, and if progress bars are enabled, then you will see
751 one appearing below the command:
752
753  ><fs> copy-size /large-file /another-file 2048M
754  / 10% [#####-----------------------------------------] 00:30
755
756 The spinner on the left hand side moves round once for every progress
757 notification received from the backend.  This is a (reasonably) golden
758 assurance that the command is "doing something" even if the progress
759 bar is not moving, because the command is able to send the progress
760 notifications.  When the bar reaches 100% and the command finishes,
761 the spinner disappears.
762
763 Progress bars are enabled by default when guestfish is used
764 interactively.  You can enable them even for non-interactive modes
765 using I<--progress-bars>, and you can disable them completely using
766 I<--no-progress-bars>.
767
768 =head1 GUESTFISH COMMANDS
769
770 The commands in this section are guestfish convenience commands, in
771 other words, they are not part of the L<guestfs(3)> API.
772
773 =head2 help
774
775  help
776  help cmd
777
778 Without any parameter, this lists all commands.  With a C<cmd>
779 parameter, this displays detailed help for a command.
780
781 =head2 quit | exit
782
783 This exits guestfish.  You can also use C<^D> key.
784
785 @FISH_COMMANDS@
786
787 =head1 COMMANDS
788
789 @ACTIONS@
790
791 =head1 EXIT CODE
792
793 guestfish returns 0 if the commands completed without error, or
794 1 if there was an error.
795
796 =head1 ENVIRONMENT VARIABLES
797
798 =over 4
799
800 =item EDITOR
801
802 The C<edit> command uses C<$EDITOR> as the editor.  If not
803 set, it uses C<vi>.
804
805 =item GUESTFISH_PID
806
807 Used with the I<--remote> option to specify the remote guestfish
808 process to control.  See section
809 L</REMOTE CONTROL GUESTFISH OVER A SOCKET>.
810
811 =item HOME
812
813 If compiled with GNU readline support, various files in the
814 home directory can be used.  See L</FILES>.
815
816 =item LIBGUESTFS_APPEND
817
818 Pass additional options to the guest kernel.
819
820 =item LIBGUESTFS_DEBUG
821
822 Set C<LIBGUESTFS_DEBUG=1> to enable verbose messages.  This has the
823 same effect as using the B<-v> option.
824
825 =item LIBGUESTFS_MEMSIZE
826
827 Set the memory allocated to the qemu process, in megabytes.  For
828 example:
829
830  LIBGUESTFS_MEMSIZE=700
831
832 =item LIBGUESTFS_PATH
833
834 Set the path that guestfish uses to search for kernel and initrd.img.
835 See the discussion of paths in L<guestfs(3)>.
836
837 =item LIBGUESTFS_QEMU
838
839 Set the default qemu binary that libguestfs uses.  If not set, then
840 the qemu which was found at compile time by the configure script is
841 used.
842
843 =item LIBGUESTFS_TRACE
844
845 Set C<LIBGUESTFS_TRACE=1> to enable command traces.
846
847 =item PAGER
848
849 The C<more> command uses C<$PAGER> as the pager.  If not
850 set, it uses C<more>.
851
852 =item TMPDIR
853
854 Location of temporary directory, defaults to C</tmp>.
855
856 If libguestfs was compiled to use the supermin appliance then each
857 handle will require rather a large amount of space in this directory
858 for short periods of time (~ 80 MB).  You can use C<$TMPDIR> to
859 configure another directory to use in case C</tmp> is not large
860 enough.
861
862 =back
863
864 =head1 FILES
865
866 =over 4
867
868 =item $HOME/.guestfish
869
870 If compiled with GNU readline support, then the command history
871 is saved in this file.
872
873 =item $HOME/.inputrc
874
875 =item /etc/inputrc
876
877 If compiled with GNU readline support, then these files can be used to
878 configure readline.  For further information, please see
879 L<readline(3)/INITIALIZATION FILE>.
880
881 To write rules which only apply to guestfish, use:
882
883  $if guestfish
884  ...
885  $endif
886
887 Variables that you can set in inputrc that change the behaviour
888 of guestfish in useful ways include:
889
890 =over 4
891
892 =item completion-ignore-case (default: on)
893
894 By default, guestfish will ignore case when tab-completing
895 paths on the disk.  Use:
896
897  set completion-ignore-case off
898
899 to make guestfish case sensitive.
900
901 =back
902
903 =item test1.img
904
905 =item test2.img (etc)
906
907 When using the C<-N> or C<--new> option, the prepared disk or
908 filesystem will be created in the file C<test1.img> in the current
909 directory.  The second use of C<-N> will use C<test2.img> and so on.
910 Any existing file with the same name will be overwritten.
911
912 =back
913
914 =head1 SEE ALSO
915
916 L<guestfs(3)>,
917 L<http://libguestfs.org/>,
918 L<virt-cat(1)>,
919 L<virt-df(1)>,
920 L<virt-edit(1)>,
921 L<virt-list-filesystems(1)>,
922 L<virt-list-partitions(1)>,
923 L<virt-ls(1)>,
924 L<virt-make-fs(1)>,
925 L<virt-rescue(1)>,
926 L<virt-resize(1)>,
927 L<virt-tar(1)>,
928 L<virt-win-reg(1)>.
929
930 =head1 AUTHORS
931
932 Richard W.M. Jones (C<rjones at redhat dot com>)
933
934 =head1 COPYRIGHT
935
936 Copyright (C) 2009-2010 Red Hat Inc.
937 L<http://libguestfs.org/>
938
939 This program is free software; you can redistribute it and/or modify
940 it under the terms of the GNU General Public License as published by
941 the Free Software Foundation; either version 2 of the License, or
942 (at your option) any later version.
943
944 This program is distributed in the hope that it will be useful,
945 but WITHOUT ANY WARRANTY; without even the implied warranty of
946 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
947 GNU General Public License for more details.
948
949 You should have received a copy of the GNU General Public License
950 along with this program; if not, write to the Free Software
951 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.