本文详细介绍了Linux系统中配置文件bashrc的作用、使用方法和配置技巧。bashrc文件是bash shell在用户登录时自动执行的脚本,用于定义用户的环境变量和别名等个性化设置。文章首先解释了bashrc文件的重要性,并介绍了如何编辑和修改该文件。接着,通过实例展示了如何在bashrc中设置环境变量、自定义命令别名、设置命令行提示符等常见操作。此外,文章还分享了一些高级配置技巧,如使用条件语句实现不同环境下的不同配置,以及通过函数实现复杂命令的封装和复用。最后,总结了bashrc文件配置的关键点,并强调了合理配置bashrc对于提升Linux使用体验的重要性。 

1. 内容模式

PS1变量主要由下表的转义字符组成

\d代表日期,格式为weekday month date,例如:“Mon Aug 1”
\H完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t显示时间为24小时格式,如:HH:MM:SS
\T显示时间为12小时格式
\A显示时间为24小时格式:HH:MM
\u当前用户的账号名称
\vBASH的版本信息
\l显示登陆的终端号
\w完整的工作目录名称。家目录会以 ~代替
\W利用basename取得工作目录名称,所以只会列出最后一个目录
/!命令行动态统计历史命令次数
\#下达的第几个命令
\$提示字符,如果是root时,提示符为:# ,普通用户则为:$

例如
CentOS 中默认

PS1="[\u@\h \W]\\$ "

Ubuntu 中默认

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

等效于

PS1='\u@\h:\w\$ '

2. 格式与颜色

PS1 控制格式与颜色的方法与《控制 Bash 输出的格式与颜色》中类似,但是需要用 \[ 和\] 将 \033[控制字符m......\033[0m 包裹起来,避免出现格式混乱

”\[\033[控制字符m......\033[0m\]“

将下面代码用连接排列放在上面控制字符的部分. 不区分先后,可多种效果叠加

  • 格式代码:FF∈{1,2,3,4,5,7,8}
  • 前景 8/16 色彩代码:FgC16FgC16∈{30,…,37,39,90,…,97}
  • 背景 8/16 色彩代码:BgC16BgC16∈{40,…,47,49,100,…,107}
  • 前景 88/256 色彩代码:38;5;C256C256∈{0,1,…,255}
  • 背景 88/256 色彩代码:48;5;C256C256∈{0,1,…,255

例如:
Ubuntu16.04 中彩色提示符设置如下

PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

3. 配置文件设置

3.1. 控制台显示设置

在 ~/.bashrc 文件是修改

不显示host和username,显示工作目标全路径,显示git的分支名

如果想只显示工作目录文件夹名,则将w改为W

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;34m\033[01;34m\]\w\[\033[01;32m\033[01;32m\]$(git_branch)\[\033[00m\033[00m\$\] '

注意还需要添加 

function git_branch {
  branch="`git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //"`"
  if [ "${branch}" != "" ];then
      if [ "${branch}" = "(no branch)" ];then
          branch="(`git rev-parse --short HEAD`...)"
      fi
      echo " ($branch)"
  fi
}

用于返回git分支名 

3.2. 使用Meld作为Git代码合并工具

在~/.bashrc中加入下面几行

# ------------------ M E R G E -------------------------
[merge]
    tool = meld

[mergetool "meld"]
    cmd = meld --auto-merge \"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\" --label \"MERGE (REMOTE BASE MY)\"
    trustExitCode = false

[mergetool]
    # don't ask if we want to skip merge
    prompt = false

    # don't create backup *.orig files
    keepBackup = false

# ------------------ D I F F -------------------------
[diff]
    guitool = meld

[difftool "meld"]
    cmd = meld \"$LOCAL\" \"$REMOTE\" --label \"DIFF (ORIGINAL MY)\"

参考文献

【Linux】环境变量 PS1 设置 Bash 提示符的样式_RadiantJeral的博客-CSDN博客

Logo

更多推荐