shell启动脚本

时间:2019-04-16 23:59:04  来源:igfitidea点击:

如果要永久地设置bash环境变量,需要将设置添加到用户的主目录中的初始化文件$HOME/.bash_profile中。

shell脚本的执行顺序

/etc/profile- 它包含Linux系统范围的环境和启动程序。当用户登录到系统时,首先运行这个文件。此文件还充当bash shell的系统级配置文件。
/etc/profile.d- /etc/profile将调用/etc/profile.d/。它是一个目录,/etc/profile使用for循环调用这个目录中的所有脚本。当用户登录时,第二步是执行这个目录下的文件。
~/.bash_profile或者 $HOME/.bash_profile— 最后,用户登录时,这个文件.bash_profile将被调用。而它又调用用户的主目录中的 ~/.bashrc文件。

请注意,每个脚本都可以更改之前调用的脚本中所做的设置。例如,在/etc/profile中设置了PS1,我们可以在/.bash_profile 或者 ~/.bashrc 继续对其进行设置。

使用上面的文件可以定制shell环境。

典型的应用是

  • 设置PATH和PS1 (shell提示)变量。
  • 通过PRINTER变量设置默认打印机。
  • 通过变量设置默认文本编辑器。
  • 设置默认的umask(文件模式创建掩码)。
  • 通过覆盖来删除不需要的设置,如变量或别名。
  • 设置环境。
  • 设置别名。
  • 设置函数。

设置系统范围的shell选项

默认情况下,/etc/profile文件是shell系统级的文件。
您可以使用这个文件为所有用户进行设置shell环境。
但是,在CentOS / Fedora / Redhat Enterprise Linux下,建议您在/etc/profile.d/目录下创建文件进行设置。其他系统才使用/etc/profile文件。

示例- 为所有用户设置 JAVA_HOME 和 PATH变量

  1. 创建新文件/etc/profile.d/java.sh

java.sh

#!/bin/bash
export JAVA_HOME=/opt/jdk1.5.0_12
export PATH=$PATH:$JAVA_HOME/bin
  1. 授予可执行权限
chmod +x /etc/profile.d/java.sh

~/.bashrc文件设置示例

如何设置shell环境变量?

# 在历史记录缓冲区中可以存储5000个命令
export HISTSIZE=5000

# 在历史记录文件中可以存储5000个命令
export HISTFILESIZE=5000      

# 历史记录中避免重复
export HISTIGNORE='&:[ ]*'

# 分页时使用less命令
export PAGER=less

# 将vim设置为默认文本编辑器
export EDITOR=vim
export VISUAL=vim
export SVN_EDITOR="$VISUAL"

# Oracle数据库配置
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_SID=XE
export NLS_LANG=$($ORACLE_HOME/bin/nls_lang.sh)

# 设置 JAVA_HOME 
export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre

# 添加 ORACLE, JAVA  ~/bin bin 等路径到 PATH变量中
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin:$JAVA_HOME/bin

# 使用密钥进行SSH登录
# 这样就不需要再输入密码
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh

# 使bash_completion生效
source /etc/bash_completion

# MS-DOS / XP cmd等东西
alias edit=$VISUAL
alias copy='cp'
alias cls='clear'
alias del='rm'
alias dir='ls'
alias md='mkdir'
alias move='mv'
alias rd='rmdir'
alias ren='mv'
alias ipconfig='ifconfig'

# 其他 Linux 命令
alias bc='bc -l'
alias diff='diff -u'

# 从 RHN进行更新
alias update='yum -y update'

# 设置默认网卡 eth1 
alias dnstop='dnstop -l 5  eth1'
alias vnstat='vnstat -i eth1'

# grep时有颜色提示
alias grep='grep --color'

# ls 别名
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'