2015-06-22 52 views
0

這些天我遇到了一個奇怪的Bash問題。在終端中,當我按下命令ctrl+u並且想要清除當前輸入行而不是清除它時,有時它會截斷當前輸入行,從一開始就保留某些字母。Bash命令`Ctrl + u`截斷當前輸入行而不是清除它

例如,在下面的例子中,我先按4次ctrl+p找到最近輸入的命令。然後當我停在ls /Users/Heros/dev/gitinspector/gitinspector-0.3.2命令。現在我按ctrl+u。當前輸入行未完成清除,如圖所示。它在那裏留下ls /Users

我一直googling這個問題幾天,但沒有運氣。有人遇到過類似的問題嗎?提供的任何線索將很感激,提前感謝。

順便說一句,我使用Bash和我使用的終端是iTerms2。我嘗試了標準的終端應用程序,問題仍然存在。

enter image description here

協助調查,我貼我使用~/.bash_profile,在情況下,它會有所幫助。

# Add Homebrew `/usr/local/bin` and User `~/bin` to the `$PATH` 
 
PATH=/usr/local/bin:$PATH 
 
PATH=$HOME/bin:$PATH 
 
export PATH 
 

 
GRADLE_HOME='~/dev/gradle-2.4' 
 
export GRADLE_HOME 
 
PATH=$PATH:$GRADLE_HOME/bin 
 
export PATH 
 

 
# Load the shell dotfiles, and then some: 
 
# * ~/.path can be used to extend `$PATH`. 
 
# * ~/.extra can be used for other settings you don’t want to commit. 
 
for file in ~/.{path,bash_prompt,exports,aliases,functions,extra}; do 
 
     [ -r "$file" ] && source "$file" 
 
    done 
 
    unset file 
 

 
alias gitinspector='~/dev/gitinspector/gitinspector-0.3.2/gitinspector/gitinspector.py' 
 

 
#export java env 
 
export JAVA_6_HOME='/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home' 
 
export JAVA_7_HOME='/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home' 
 
export JAVA_8_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home' 
 

 
#add JAVA_OPTS 
 
JAVA_OPTS="-Xms256m -Xmx1024m -XX:MaxNewSize=512m" 
 
export JAVA_OPTS 
 

 
#switch among jdk6/7/8 
 
alias jdk6='export JAVA_HOME=$JAVA_6_HOME' 
 
alias jdk7='export JAVA_HOME=$JAVA_7_HOME' 
 
alias jdk8='export JAVA_HOME=$JAVA_8_HOME' 
 
export JAVA_HOME=$JAVA_8_HOME 
 

 
alias jshint='~/.npm/jslint/0.9.0/package/node_modules/jshint/bin/jshint' #add jshint env 
 
alias chrome='/usr/bin/open -a "/Applications/Google Chrome.app"' # open an url or html from command 
 
alias xee='/usr/bin/open -a "/Applications/Xee.app"' 
 
alias thunder='/usr/bin/open -a "/Applications/Thunder.app"' 
 
alias macdown='/usr/bin/open -a "/Applications/MacDown.app"' 
 
alias notes='/usr/bin/open -a "/Applications/Notes.app"' 
 
alias pdf='/usr/bin/open -a "/Applications/Preview.app"' 
 
alias gif='/usr/bin/open -a "/Applications/LICEcap.app"' 
 

 
#add maven env 
 
MAVEN_HOME=$HOME/dev/apache-maven-3.3.3 
 
M2_HOME=$HOME/dev/apache-maven-3.3.3 
 
PATH=$MAVEN_HOME/bin:$PATH 
 
export MAVEN_HOME 
 
export M2_HOME 
 
export PATH 
 

 
alias fq="~/dev/code_sh/auto_gfw.sh" 
 
alias grep='grep --color=auto' 
 
alias listen="lsof -P -i -n" 
 
mcd() { mkdir -p "$1";cd "$1";} #enter into dir once a dir created 
 
cls() { cd "$1"; ls; } #list after enter into a dir 
 

 
extract() { 
 
    if [ -f $1 ]; then 
 
     case $1 in 
 
      *.tar.bz2) tar xjf $1 ;; 
 
      *.tar.gz) tar xzf $1 ;; 
 
      *.bz2) bunzip2 $1 ;; 
 
      *.rar) unrar e $1 ;; 
 
      *.gz) gunzip $1 ;; 
 
      *.tar) tar xf $1 ;; 
 
      *.tbz2) tar xjf $1 ;; 
 
      *tgz) tar xzf $1 ;; 
 
      *.zip) unzip $1 ;; 
 
      *.Z) uncompress $1 ;; 
 
      *.7z) 7z x $1 ;; 
 
      *) echo "'$1' cannot be extracted via extract()";; 
 
     esac 
 
    else 
 
     echo "'$1' is not a valid file" 
 
    fi 
 
} 
 

 
#add path for mysql 
 
alias mysql=/usr/local/mysql/bin/mysql 
 
alias mysqladmin=/usr/local/mysql/bin/mysqladmin 
 
PATH=$PATH:/usr/local/mysql/bin 
 

 
# Setting PATH for Python 2.7 
 
# The orginal version is saved in .bash_profile.pysave 
 
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" 
 
export PATH 
 

 
#rvm 
 
export PATH 
 
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* 
 

 
#set bash to use vi mode as default rather than emacs 
 
#set -o vi 
 
function rvm_version { 
 
    local gemset=$(echo $GEM_HOME | awk -F'@' '{print $2}') 
 
    [ "$gemset" != "" ] && gemset="@$gemset" 
 
    local version=$(echo $MY_RUBY_HOME | awk -F'-' '{print $2}') 
 
    [ "$version" != "" ] && version="$version" 
 
    local full="ruby$version$gemset" 
 
    [ "$full" != "" ] && echo "$full " 
 
} 
 

 
#function parse_ruby_version { 
 
    #ruby -v | cut -d" " -f2 
 
#} 
 

 
function color_my_prompt { 
 
    #local __user_and_host="\e[m"Shibin"@\h $ " 
 
    local __user_and_host="\e[\033[36m\]"Shibin"@\h $ " 
 
    local __cur_location="\[\033[01;34m\]\w" 
 
    local __git_branch_color="\[\033[31m\]" 
 
    #local __git_branch="\`ruby -e \"print (%x{git branch 2> /dev/null}.grep(/^\*/).first || '').gsub(/^\* (.+)$/, '(\1) ')\"\`" 
 
    local __git_branch='`git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\ /`' 
 
    local __prompt_tail="\[\033[35m\]$" 
 
    local __last_color="\[\033[00m\]" 
 
    # local __rvm_color="\[\033[01m\]" 
 
    #export PS1="$__user_and_host $__cur_location $__rvm_color$(\rvm_version) $__git_branch_color$__git_branch$__prompt_tail$__last_color " 
 
    export PS1="$__user_and_host $__cur_location $__git_branch_color$__git_branch$__prompt_tail$__last_color " 
 
} 
 
color_my_prompt 
 
#THIS MUST BE AT THE END OF THE FILE FOR GVM TO WORK!!! 
 
[[ -s "/Users/Heros/.gvm/bin/gvm-init.sh" ]] && source "/Users/Heros/.gvm/bin/gvm-init.sh"

+0

如果您使用不同的終端,例如標準的終端應用程序,會發生什麼情況?這至少會告訴你問題可能出在哪裏。 –

+0

好,我只是嘗試了標準的終端應用程序,那裏的問題。爲了幫助調查,我還通過添加了我的'〜/ .bash_profile'配置文件來編輯我的原始文章。謝謝。 – mainframer

回答

0

最後,我得到一個解決方法,僅通過禁用color_my_prompt功能,問題消失了。我之前從網上覆制這個功能,目前我不知道它有什麼問題。

任何人找到根本原因,我會接受你的答案,謝謝。