bash脚本忽略/etc/profile.d?

分享于 

5分钟阅读

ubuntu

  繁體

问题

我想为bash设置一些系统范围的别名和自定义提示,

我创建了/etc/profiles.d/profile_local.sh,


root@ubuntu:/etc/profile.d# ll


total 28


drwxr-xr-x 2 root root 4096 Mar 23 08:56 .


drwxr-xr-x 135 root root 12288 Mar 23 09:15 ..


-rw-r--r-- 1 root root 660 Oct 23 2012 bash_completion.sh


-rw-r--r-- 1 root root 3317 Mar 23 07:36 profile_local.sh


-rw-r--r-- 1 root root 1947 Nov 23 00:57 vte.sh



调用了/etc/profile.d,它包含以下代码块:


if [ -d /etc/profile.d ]; then


 for i in /etc/profile.d/*.sh; do


 if [ -r $i ]; then


 . $i


 fi


 done


 unset i


fi



脚本'profile_local.sh '的内容:


# 3/23/14 - Copied from Gentoo /etc/bash/bashrc


# Placed in /etc/profile.d as described at:


# https://help.ubuntu.com/community/EnvironmentVariables



# This file is sourced by all *interactive* bash shells on startup,


# including some apparently interactive shells such as scp and rcp


# that can't tolerate any output. So make sure this doesn't display


# anything or bad things will happen !



# Test for an interactive shell. There is no need to set anything


# past this point for scp and rcp, and it's important to refrain from


# outputting anything in those cases.


if [[ $- != *i* ]] ; then


 # Shell is non-interactive. Be done now!


 return


fi



# Bash won't get SIGWINCH if another process is in the foreground.


# Enable checkwinsize so that bash will check the terminal size when


# it regains control. #65623


# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)


shopt -s checkwinsize



# Enable history appending instead of overwriting. #139609


shopt -s histappend



# Change the window title of X terminals 


case ${TERM} in


 xterm*|rxvt*|Eterm|aterm|kterm|gnome*|interix)


 PROMPT_COMMAND='echo -ne"33]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}07"'


 ;;


 screen)


 PROMPT_COMMAND='echo -ne"33_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}33"'


 ;;


esac



use_color=false



# Set colorful PS1 only on colorful terminals.


# dircolors --print-database uses its own built-in database


# instead of using /etc/DIR_COLORS. Try to use the external file


# first to take advantage of user additions. Use internal bash


# globbing instead of external grep binary.


safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM


match_lhs=""


[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"


[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"


[[ -z ${match_lhs} ]] 


 && type -P dircolors >/dev/null 


 && match_lhs=$(dircolors --print-database)


[[ $'n'${match_lhs} == *$'n'"TERM"${safe_term}* ]] && use_color=true



if ${use_color} ; then


 # Enable colors for ls, etc. Prefer ~/.dir_colors #64489


 if type -P dircolors >/dev/null ; then


 if [[ -f ~/.dir_colors ]] ; then


 eval $(dircolors -b ~/.dir_colors)


 elif [[ -f /etc/DIR_COLORS ]] ; then


 eval $(dircolors -b /etc/DIR_COLORS)


 fi


 fi



 if [[ ${EUID} == 0 ]] ; then


 PS1='[33[01;31m]h[33[01;34m] W $[33[00m] '


 else


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


 fi



 alias ls='ls --color=auto'


 alias grep='grep --colour=auto'


else


 if [[ ${EUID} == 0 ]] ; then


 # show root@ when we don't have colors


 PS1='u@h W $ '


 else


 PS1='u@h w $ '


 fi


fi



# Try to keep environment pollution down, EPA loves us.


unset use_color safe_term match_lhs



TZ="PST8PDT"



alias ll='ls -la'


alias dig='dig +search'


alias dir='ls -ba'



alias edit="ee"


alias ss="ps -aux"


alias dot='ls .[a-zA-Z0-9_]*'


alias news="xterm -g 80x45 -e trn -e -S1 -N &"



alias more="less"


alias c="clear"


alias m="more"


alias j="jobs"



# common misspellings


alias mroe=more


alias pdw=pwd




答案1

最可能的罪魁祸首是~/.bashrc



相关文章