---
layout: docs
page_title: Aliases - Command-Line Interface
description: |-
  Custom Vagrant commands can be defined using aliases, allowing for a simpler,
  easier, and more familiar command line interface.
---

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
> [!IMPORTANT]  
> **Documentation Update:** Product documentation previously located in `/website` has moved to the [`hashicorp/web-unified-docs`](https://github.com/hashicorp/web-unified-docs) repository, where all product documentation is now centralized. Please make contributions directly to `web-unified-docs`, since changes to `/website` in this repository will not appear on developer.hashicorp.com.
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

# Aliases

Inspired in part by Git's own
[alias functionality](https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases),
aliases make your Vagrant experience simpler, easier, and more familiar by
allowing you to create your own custom Vagrant commands.

Aliases can be defined within `VAGRANT_HOME/aliases` file, or in a custom file
defined using the `VAGRANT_ALIAS_FILE` environment variable, in the following
format:

```shell
# basic command-level aliases
start = up
stop = halt

# advanced command-line aliases
eradicate = !vagrant destroy && rm -rf .vagrant
```

In a nutshell, aliases are defined using a standard `key = value` format, where
the `key` is the new Vagrant command, and the `value` is the aliased command.
Using this format, there are two types of aliases that can be defined: internal
and external aliases.

## Internal Aliases

Internal command aliases call the CLI class directly, allowing you to alias
one Vagrant command to another Vagrant command. This technique can be very
useful for creating commands that you think _should_ exist. For example,
if `vagrant stop` feels more intuitive than `vagrant halt`, the following alias
definitions would make that change possible:

```shell
stop = halt
```

This makes the following commands equivalent:

```shell
vagrant stop
vagrant halt
```

## External Aliases

While internal aliases can be used to define more intuitive Vagrant commands,
external command aliases are used to define Vagrant commands with brand new
functionality. These aliases are prefixed with the `!` character, which
indicates to the interpreter that the alias should be executed as a shell
command. For example, let's say that you want to be able to view the processor
and memory utilization of the active project's virtual machine. To do this, you
could define a `vagrant metrics` command that returns the required information
in an easy-to-read format, like so:

```shell
metrics = !ps aux | grep "[V]BoxHeadless" | grep $(cat .vagrant/machines/default/virtualbox/id) | awk '{ printf("CPU: %.02f%%, Memory: %.02f%%", $3, $4) }'
```

The above alias, from within the context of an active Vagrant project, would
print the CPU and memory utilization directly to the console:

```text
CPU: 4.20%, Memory: 11.00%
```
