### 2.2 Customizing Scheme ¶

You can customize your setup by using a variety of tools:

- Command-line options. Many parameters, like memory usage and the location of libraries, may be varied by command-line options. See Command-Line Options.
- Shell scripts. You might like to write scripts that invoke Scheme with your favorite command-line options. For example, you might not have enough memory to run Edwin or the compiler with its default memory parameters (it will print something like “Not enough memory for this configuration” and halt when started), so you can write a shell script that will invoke Scheme with the appropriate `--heap` and other parameters.
- Scheme supports init files: an init file is a file containing Scheme code that is loaded when Scheme is started, immediately after the identification banner, and before the input prompt is printed. This file is stored in your home directory, which is normally specified by the `HOME` environment variable. Under unix, the file is called `.scheme.init`.

  In addition, when Edwin starts up, it loads a separate init file from your home directory into the Edwin environment. This file is called `.edwin` under unix (see Starting Edwin).

  You can use both of these files to define new procedures or commands, or to change defaults in the system.

  The `--no-init-file` command-line option causes Scheme to ignore the `.scheme.init` file (see Command-Line Options).

- Environment variables. Most microcode parameters, and some runtime system and Edwin parameters, can be specified by means of environment variables. See Environment Variables.
- Icons. With some window managers under X11, it is possible to create icons that invoke Scheme with different parameters.