> For the complete documentation index, see [llms.txt](https://slackwarecn.gitbook.io/slackbook_cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://slackwarecn.gitbook.io/slackbook_cn/chapter_05/customization.md).

# 制定

现在你应该对 bash 有所熟悉，并且你可能会碰到一些奇特的情况。比如说，当你登录的时候，会呈现给你一个类似下面这样的提示。

```
alan@darkstar:~$
```

但是，有些时候你可能会看到像下面这样的提示：

```
bash-3.1$
```

造成这样的原因和控制 bash 提示的环境变量有关。一些 shell 被认为是“login shell”，而另一些 shell 则被认为是“interactive shell”，这两种 shell 当它们启动的时候读取的是不一样的配置文件。“login shell”读取的是 `/etc/profile` 和 `~/.bash_profile` 。“interactive shell”读取的是 `~/.bashrc` 。这对于一些有能力的用户来说是有好处的，但是对于新手来说它们并不关心这两种 shell 的不同，并且希望任何时候它们执行 bash 的时候都能有相同的环境。如果是这样，编辑你的 `~/.bashrc` 文件，然后写入以下几行。（更多关于配置文件的详情请阅读 bash 手册的“INVOCATION”一节）

> 译者注：这里的“shell”特指 bash。

```
# ~/.bashrc
. /etc/profile
. ~/.bash_profile
```

当输入上述内容后，“login shell”和“interactive shell”都会有同样的环境设置。现在如果我们想自己定制 shell 设定，只要编辑 `~/.bash_profile`（用户各自的）或者 `/etc/profile`（全局的）。让我们开始配置 bash 提示。

对于 bash 提示的格式每个用户都有各自的喜好。我个人倾向于短小的简单的提示，因为那样节省空间。但我也使用多多行提示。我其中的一个朋友甚至在它的提示中包含 ASCII-art。要改变你的提示格式，你只需要改变 `PS1` 变量。默认情况下，Slackware 将提示配置成如下格式：

```
darkstar:~$ echo $PS1
\u@\h:\w\$
```

是的，这个看上去有点搞笑的一串东西控制着你 bash 的提示格式。基本上，每一个在 `PS1` 变量中的字符都包含在了提示中，除非之前有转义字符 `\`。有很多的转义序列，我们不会一个个去讨论，但是我会解释这里的这些。第一个 `\u` 会被转义成当前用户的用户名。 `\h` 是主机名。 `\w` 是当前的工作目录，`\$` 显示的要么是 `#`（root 用户）要么是 `$`（普通用户）。一个完整的转义序列列表可以在 bash 手册的“PROMOTING”一节中看到。

虽然我们已经讨论了这个默认的提示，不过我还要花些时间展示给你几个提示的例子以及 `PS1` 的设置。

```
Wed Jan 14 12:08 AM
alan@raven:~$ echo $PS1
\d \@\n\u@\h:\w$
HOST: raven - JOBS: 0 - TTY: 3
alan@~/Desktop/sb_3.0:$ echo $PS1
HOST: \H - JOBS: \j - TTY: \l\n\u@\w:\$
```

更多配置 bash 提示的信息，包括设置有颜色的提示，可以参考 `/usr/doc/Linux-HOWTOs/Bash-Prompt-HOWTO` 。这个文档会带给你一个好的想法。
