# 原创 : 了解Shell环境 # 了解Shell环境 ## shell 环境 大多数程序用配置文件来存储程序设置, 一些程序会根据环境变量来调整他们的行为。shell 在环境中存储了两种基本类型的数据:Shell 变量是 bash 存放的少量数据,剩下的都是 环境变量。另外还有别名和 shell 函数。 ``` printenv - 打印部分或所有的环境变量 set - 设置 shell 选项 export — 导出环境变量,让随后执行的程序知道。 alias - 创建命令别名 ``` ### 检查环境变量 ``` # printenv 命令也能够列出特定变量的数值 alien@localhost:~$ printenv USER alien # echo 命令来查看一个变量的内容 alien@localhost:~$ echo $HOME /home/alien ``` 别名无法通过使用 set 或 printenv 来查看。 用不带参数的 alias 来查看别名: ``` alien@localhost:~$ alias alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l='ls -CF' alias la='ls -A' alias ll='ls -alF' alias ls='ls --color=auto' ```
alien@localhost:~$ foo="This is some"
alien@localhost:~$ echo $foo
This is some
alien@localhost:~$ foo="$foo text.";echo $foo
This is some text.
`export PATH`:这个 export 命令告诉 shell 让这个 shell 的子进程可以使用 PATH 变量的内容。
### 修改 shell 环境
添加目录到你的 PATH 变量或者是定义额外的环境变量,要把这些更改放置到 .bash_profile 文件中(或者其替代文件中,根据不同的发行版。例如,Ubuntu 使用 .profile 文件)。
对于其它的更改,要放到 .bashrc 文件中。
```
# 别名
alien@localhost:~$ ll
总用量 332
drwxrwxrwx 35 alien alien 4096 9月 18 22:32 ./
drwxr-xr-x 3 root root 4096 11月 29 2017 ../
...
```
```
# 强迫 bash 重新读取修改过的 .bashrc 文件,使用下面的命令:
source .bashrc
```
## 自定义Shell提示符
提示符是由一个环境变量定义的,叫做 PS1(是“prompt string one” 的简写)
```
alien@localhost:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
```
具体的修改详见:[https://billie66.github.io/TLCL/book/chap14.html](https://billie66.github.io/TLCL/book/chap14.html) ,这方面不需要了解。