Linux下shell显示用户名和主机名

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

1. 问题描述

最近在服务器上重新安装了一点东西,结果登录的shell界面变成了显示-bash-4.2$,显得很丑而且使用起来十分不方便,主要是scp时需要用户名和主机名,因此对其进行了修改。

2. 解决方案

修改当前用户的.bash_profile文件,在其中加入:

1
export PS1='[\u@\h \W]$ '

source .bash_profile,OK,问题解决。

3. 解释

PS1是Linux终端用户的一个环境变量,用来说明命令行提示符的设置。\u等是特殊字符,可以通过man bash命令查看,其意义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
\a     an ASCII bell character (07)
\d the date in "Weekday Month Date" format (e.g., "Tue May 26")
\D{format}
the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
\e an ASCII escape character (033)
\h the hostname up to the first `.'
\H the hostname
\j the number of jobs currently managed by the shell
\l the basename of the shell's terminal device name
\n newline
\r carriage return
\s the name of the shell, the basename of $0 (the portion following the final slash)
\t the current time in 24-hour HH:MM:SS format
\T the current time in 12-hour HH:MM:SS format
\@ the current time in 12-hour am/pm format
\A the current time in 24-hour HH:MM format
\u the username of the current user
\v the version of bash (e.g., 2.00)
\V the release of bash, version + patch level (e.g., 2.00.0)
\w the current working directory, with $HOME abbreviated with a tilde (uses the value of the PROMPT_DIRTRIM variable)
\W the basename of the current working directory, with $HOME abbreviated with a tilde
\! the history number of this command
\# the command number of this command
\$ if the effective UID is 0, a #, otherwise a $
\nnn the character corresponding to the octal number nnn
\\ a backslash
\[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
\] end a sequence of non-printing characters

部分特殊字符解释如下:

1
2
3
4
5
\u 当前用户的用户名
\h 用.分开的第一个主机名
\H 完整的主机名
\W 当前工作目录的目录名,只显示路径的最后一个目录
\w 当前工作目录的目录名,显示全路径
如果有收获,可以请我喝杯咖啡!