"sed" o "awk" lanciato sulla finestra di apertura del terminale

2

A un certo punto, ho notato uno strano comportamento dell'app Terminal - ora all'apertura di una nuova finestra ottengo questo come normale:

Last login: Tue Nov 27 11:54:21 on ttys001

ma dopo non è possibile vedere il segno "~" e il titolo della finestra mostra "Terminal - sed - 80x24" che significa che sed è in esecuzione. Dopo aver premuto due volte il tasto "invio", tutto diventa normale, ma ora dopo ogni nuovo comando inserito, devo premere due volte "Invio" dopo di esso. Questo mi fa impazzire! Non ho idea di cosa sia successo. Forse c'è uno script di configurazione di avvio per terminale / bash? Ho controllato .bash_profile sembra buono come prima.

Ecco il mio file .bash_profile:

export DOCUMENTS=~/Documents
alias twrangler="open -a TextWrangler"
alias countloc="find -f . '(' -name '*.m' -or -name '*.mm' ')' -print | xargs wc -l"

# Terminal colours (after installing GNU coreutils)
# NM="\[3[0;38m\]" #means no background and white lines
# HI="\[3[0;37m\]" #change this for letter colors
# HII="\[3[0;31m\]" #change this for letter colors
# SI="\[3[0;33m\]" #this is for the current directory
# IN="\[3[0m\]"
# export PS1="$NM[$SI\w$NM] $IN"

export HISTCONTROL=ignoredups # Ignores dupes in the history
shopt -s checkwinsize # After each command, checks the windows size and changes lines and columns

# bash completion settings (actually, these are readline settings)
bind "set completion-ignore-case on" # note: bind is used instead of setting these in .inputrc. This ignores case in bash completion
bind "set bell-style none" # No bell, because it's damn annoying
bind "set show-all-if-ambiguous On" # this allows you to automatically show completion without double tab-ing

# Turn on advanced bash completion if the file exists (get it here: http://www.caliban.org/bash/index.shtml#completion)
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi

# Useful aliases
alias ls='ls $LS_OPTIONS -hF'
alias ll='ls $LS_OPTIONS -lhF'
alias l='ls $LS_OPTIONS -lAhF'

alias g='grep -i' #case insensitive grep
alias f='find . -iname'
alias ducks='du -cks * | sort -rn|head -11' # Lists the size of all the folders and files
alias top='top -o cpu'
alias systail='tail -f /var/log/system.log'

alias cd..="cd .."
alias c="clear"
alias e="exit"
alias ssh="ssh -X"
alias ..="cd .."
#alias mysqlstart='sudo /opt/local/bin/mysqld_safe5 &'
#alias mysqlstop='/opt/local/bin/mysqladmin5 -u root -p shutdown'
#alias remount='sudo ~/scripts/remount.rb'
#alias ffman='/Applications/Firefox.app/Contents/MacOS/firefox -ProfileManager'
#alias ffdev='/Applications/Firefox.app/Contents/MacOS/firefox -P rainbow' #' -chrome chrome://chromebug/content/chromebug.xul -firefox'
#alias fft1='/Applications/Firefox.app/Contents/MacOS/firefox -P test1'
#alias ffxr='/Applications/Minefield.app/Contents/MacOS/firefox -P xrefresh-dev' #' -chrome chrome://chromebug/content/chromebug.xul -firefox'
#alias ffxr2='/Applications/Minefield.app/Contents/MacOS/firefox -P xr2' #' -chrome chrome://chromebug/content/chromebug.xul -firefox'
#alias ff13='/Applications/Minefield.app/Contents/MacOS/firefox -P fb13' #' -chrome chrome://chromebug/content/chromebug.xul -firefox'
#alias ffhed='/Applications/Firefox.app/Contents/MacOS/firefox -P hed' #' -chrome chrome://chromebug/content/chromebug.xul -firefox'
#alias ffgae='/Applications/Minefield.app/Contents/MacOS/firefox -P gae' #' -chrome chrome://chromebug/content/chromebug.xul -firefox'
#alias ffgae2='/Applications/Firefox.app/Contents/MacOS/firefox -P gae' #' -chrome chrome://chromebug/content/chromebug.xul -firefox'
#alias runsvn='/usr/bin/sudo -u www /opt/local/bin/svnserve -d -r /var/svn'

#alias spotbuild='sudo mdutil -E /'

if [ -f /opt/local/etc/bash_completion ]; then
. /opt/local/etc/bash_completion
fi

COLOR_YELLOW="\[\e[33;10m\]"
COLOR_RED="\[\e[31;10m\]"
COLOR_GREEN="\[\e[32;10m\]"
COLOR_BLUE="\[\e[34;10m\]"
COLOR_NONE="\[\e[0m\]"
COLOR_NONEP="\[\e[38;0m\]"

git_dirty_flag() {
git status 2> /dev/null | grep -c : | awk '{if ($1 > 0) print "‚ö°"}'
}

parse_git_branch() {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ /'
}

prompt_func() {
previous_return_value=$?;
prompt="${COLOR_BLUE}\w${COLOR_GREEN}$(parse_git_branch)${COLOR_YELLOW}$(git_dirty_flag)${COLOR_NONEP}"
if test $previous_return_value -eq 0
then
PS1="${prompt}${COLOR_NONEP}${COLOR_NONE} "
else
PS1="${prompt}${COLOR_RED}${COLOR_NONE} "
fi
}
PROMPT_COMMAND=prompt_func

# MacPorts Installer addition on 2011-11-02_at_22:46:11: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.
    
posta peetonn 27.11.2012 - 12:19
fonte

2 risposte

1

ok, ho trovato il problema. era difficile e molti risultati differenti lo hanno portato. ma è sempre saggio capire i nostri errori, quindi ecco il mio:

  1. ho usato il file .bash_profile con alcune impostazioni per l'uso pratico (come alias, colorazione, ecc.). Ho appena copiato quel file dal mio amico e non l'ho mai guardato a fondo, tuttavia dovrei farlo. ci sono alcune funzioni di bash che aggiungono alla variabile PROMPT_COMMAND il nome dell'attuale ramo git, quindi è conveniente quando si crea cd in questa cartella, il ramo viene mostrato automaticamente in colore verde vicino al segno ~ , come questo : "%codice%". puoi trovarlo in .bash_profile come ~master e prompt_func funzioni. stanno usando il comando parse_git_branch

  2. questo file di profilo ha sempre funzionato bene. ma ad un certo punto (oggi) si è fermato. così ho appena tirato fuori la mia storia di bash e dopo un po 'di esplorazione e riflessione ho trovato il problema. ecco l'estratto dell'output da git :

437 curl -s -O http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain
438 chmod u+x git-credential-osxkeychain
439 sudo mv git-credential-osxkeychain 'which git'

comando strano

sudo mv git-credential-osxkeychain 'which git'

intendeva spostare il file git-credential-osxkeychain nella directory, dove git risiede ( history ), per il mio sistema è / usr / bin / git . ma ciò che è stato effettivamente fatto è che questo file è stato spostato nella directory / usr / bin con il nome git e la directory con git stessa è stata appena sovrascritta da quel file, Ed andato!! così ora, tornando alle funzioni degli script in .bash_profile che sta usando git, tutto sembra semplice ed ovvio - non c'è git, ma il file chiamato git (che è eseguibile btw - utility per la configurazione credenziali git) e le funzioni utilizzano questa utilità pensando che sia git stesso.

quindi ora, la soluzione per me è ripristinare l'installazione di git e rinominare il file git su git-credential-osxkeychain

resume - non scrivere mai codice bash in one-line a meno che tu non capisca chiaramente cosa porterà ciascuna delle sue affermazioni ai risultati

grazie per tutti coloro che hanno preso parte a questo.

    
risposta data 27.11.2012 - 17:44
fonte
0

Gli unici altri script che stai importando in .bash_profile sono

/etc/bash_completion

e

/opt/local/etc/bash_completion

Vorrei verificare se sono stati aggiornati di recente e se sono danneggiati. In ogni caso eviterei di chiamare entrambi (che potrebbe anche essere il problema). Se usi bash-completion da MacPorts, usa il secondo.

    
risposta data 27.11.2012 - 17:11
fonte

Leggi altre domande sui tag