当前位置: 首页 > news >正文

Ubuntu Linux bash的相关默认配置文件内容 .profile .bashrc, /etc/profile, /etc/bash.bashrc等

文章目录

    • 文件的source顺序
    • /etc/profile:系统级配置
    • /etc/bash.bashrc:bash终端的系统级配置
    • ~/.profile:用户级配置
    • ~/.bashrc bash:终端的主要配置
    • ~/.bash_logout:bash终端登出时清理

建议的额外配置:

  • 安装 bash-completion 软件包,使bash 命令的补全更加智能.

    • 安装之后会得到 /usr/share/bash-completion/bash_completion 文件,Ubuntu中会在~/.bashrc中source
  • 启用历史命令搜索

    # enable history search
    bind '"\e[A": history-search-backward'  # up arrow: search history backward
    bind '"\e[B": history-search-forward'   # up arrow: search history forward
    

文件的source顺序

以下文件是按顺序被source的。无论什么终端,bash/zsh/…都会source:

  • /etc/profile 系统级配置
  • ~/.profile 用户级配置

bash的话又会额外source这些:

  • /etc/bash.bashrc:bash终端的系统级配置
  • ~/.bash_profile or ~/.bash_login or ~/.profile
  • ~/.bashrc:bash终端的主要配置
  • ~/.bash_logout:bash终端登出时清理

/etc/profile:系统级配置

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).if [ "${PS1-}" ]; thenif [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then# The file bash.bashrc already sets the default PS1.# PS1='\h:\w\$ 'if [ -f /etc/bash.bashrc ]; then. /etc/bash.bashrcfielseif [ "$(id -u)" -eq 0 ]; thenPS1='# 'elsePS1='$ 'fifi
fiif [ -d /etc/profile.d ]; thenfor i in /etc/profile.d/*.sh; doif [ -r $i ]; then. $ifidoneunset i
fi

/etc/bash.bashrc:bash终端的系统级配置

# System-wide .bashrc file for interactive bash(1) shells.# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.# If not running interactively, don't do anything
[ -z "$PS1" ] && return# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; thendebian_chroot=$(cat /etc/debian_chroot)
fi# set a fancy prompt (non-color, overwrite the one in /etc/profile)
# but only if not SUDOing and have SUDO_PS1 set; then assume smart user.
if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; thenPS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi# Commented out, don't overwrite xterm -T "title" -n "icontitle" by default.
# If this is an xterm set the title to user@host:dir
#case "$TERM" in
#xterm*|rxvt*)
#    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
#    ;;
#*)
#    ;;
#esac# enable bash completion in interactive shells
#if ! shopt -oq posix; then
#  if [ -f /usr/share/bash-completion/bash_completion ]; then
#    . /usr/share/bash-completion/bash_completion
#  elif [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
#  fi
#fi# sudo hint
if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; thencase " $(groups) " in *\ admin\ *|*\ sudo\ *)if [ -x /usr/bin/sudo ]; thencat <<-EOFTo run a command as administrator (user "root"), use "sudo <command>".See "man sudo_root" for details.EOFfiesac
fi# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; thenfunction command_not_found_handle {# check because c-n-f could've been removed in the meantimeif [ -x /usr/lib/command-not-found ]; then/usr/lib/command-not-found -- "$1"return $?elif [ -x /usr/share/command-not-found/command-not-found ]; then/usr/share/command-not-found/command-not-found -- "$1"return $?elseprintf "%s: command not found\n" "$1" >&2return 127fi}
fiexport TERM="xterm-color"

~/.profile:用户级配置

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022# if running bash
if [ -n "$BASH_VERSION" ]; then# include .bashrc if it existsif [ -f "$HOME/.bashrc" ]; then. "$HOME/.bashrc"fi
fi# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; thenPATH="$HOME/bin:$PATH"
fi# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; thenPATH="$HOME/.local/bin:$PATH"
fi

~/.bashrc bash:终端的主要配置

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples# If not running interactively, don't do anything
case $- in*i*) ;;*) return;;
esac# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth# append to the history file, don't overwrite it
shopt -s histappend# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; thendebian_chroot=$(cat /etc/debian_chroot)
fi# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" inxterm-color|*-256color) color_prompt=yes;;
esac# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yesif [ -n "$force_color_prompt" ]; thenif [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then# We have color support; assume it's compliant with Ecma-48# (ISO/IEC-6429). (Lack of such support is extremely rare, and such# a case would tend to support setf rather than setaf.)color_prompt=yeselsecolor_prompt=fi
fiif [ "$color_prompt" = yes ]; thenPS1='${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
elsePS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1";;
*);;
esac# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; thentest -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"alias ls='ls --color=auto'#alias dir='dir --color=auto'#alias vdir='vdir --color=auto'alias grep='grep --color=auto'alias fgrep='fgrep --color=auto'alias egrep='egrep --color=auto'
fi# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'# some more ls aliases
alias ll='ls -hlF'
alias la='ls -A'
alias l='ls -CF'# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
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 definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.if [ -f ~/.bash_aliases ]; then. ~/.bash_aliases
fi# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; thenif [ -f /usr/share/bash-completion/bash_completion ]; then. /usr/share/bash-completion/bash_completionelif [ -f /etc/bash_completion ]; then. /etc/bash_completionfi
fi# enable history completion
bind '"\e[A": history-search-backward'  # up arrow: search history backward
bind '"\e[B": history-search-forward'   # up arrow: search history forward

~/.bash_logout:bash终端登出时清理

# ~/.bash_logout: executed by bash(1) when login shell exits.# when leaving the console clear the screen to increase privacyif [ "$SHLVL" = 1 ]; then[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi
http://www.dtcms.com/a/192152.html

相关文章:

  • pytorch中各种乘法操作
  • OpenCV CUDA模块中逐元素操作------数学函数
  • HDMI信号采集器连OBS没有声音的问题
  • 盒带自编教材《软件工程》目录
  • 计算机网络:蜂窝网络和WiFi网络使用的射频信号有什么区别?
  • 计算机网络:什么是电磁波以及有什么危害?
  • Spring框架的事务管理
  • 每日算法-250515
  • ProfibusDP主站转ModbusRTU/TCP与横河AXG电磁流量计通讯案例
  • 麒麟系统ARM64架构部署mysql、jdk和java项目
  • docker(四)使用篇一:docker 镜像仓库
  • 【办公类-100-01】20250515手机导出教学照片,自动上传csdn+最大化、最小化Vs界面
  • 2025长三角杯数学建模A题:智能手机产品设计优化与定价问题,赛题发布与思路分析
  • 搭建Centos环境安装禅道
  • 深度解析 Meta 开源 MR 项目《North Star》:从交互到渲染的沉浸式体验设计
  • Python 类变量与实例变量完全指南:区别、使用场景及常见陷阱
  • 兰亭妙微B端UI设计:融合多元风格,点亮品牌魅力
  • 什么是接口文档,如何使用,注意事项有哪些
  • 51c~C语言~合集5
  • SQL:MySQL函数:空值处理函数(NULL Handling Functions)
  • Uniapp中小程序调用腾讯地图(获取定位地址)
  • 【向量维度如何选择?】
  • Midjourney 最佳创作思路与实战技巧深度解析【附提示词与学习资料包下载】
  • Ubuntu 20.04 LTS 中部署 网页 + Node.js 应用 + Nginx 跨域配置 的详细步骤
  • C# 活动窗体截图:基于 Win32 API 的实现
  • Rust 学习笔记:关于 Vector 的练习题
  • 视频质量分析时,遇到不同分辨率的对照视频和源视频,分辨率对齐的正确顺序。
  • Docker容器镜像与容器常用操作指南
  • LBM:潜在桥接匹配用于图像重照明
  • Flink 1.13.2 日志配置优化:保留最近 7 天日志文件