bashsrc syntax error: unexpected end of file

ZuseZ3

Lt. Commander
Registriert
Jan. 2014
Beiträge
1.659
Hi Leute,

Ich arbeite ueber MobaXTerm auf mehreren AWS EC2 Ubuntu Machine Learning Instanzen.
Ich habe heute eine weitere Instanz aufgesetzt. Dabei habe ich das System von einer Identischen 2. EC2 Instanz geclont (Identische HW, identische Netzwerkverbindungen usw., lediglich eine andere availability zone.
Dies funktionierte auch alles problemlos, bis ich ein paar Aliase in die ~/.bashrc hinzugefügt habe.
Seit dem erhalte ich nach ein paar Änderungen folgende Fehlermeldungen:
-bash: /home/ubuntu/.bashrc: line 120: syntax error: unexpected end of file
Dabei scheinen die Fehler wahllos zu entstehen. Habe ich z.B. 2 Unterordner A und B und einen alias auf A,
so kann das erstellen eines 2. Aliases (natuerlich aendere ich auch den alias namen) auf Unterordner B den Fehler versuchen.
Daher schließe ich auch die klassischen Fehler wie ein fehlendes fi aus.
cp /etc/skel/.bashrc ~/ und ein erneutes einloggen rettet mich dann immer, bis ich wieder was aendere.
Alternativ reicht es, wenn ich bei originaler .bashrc die Datei ~/.bash_aliases anlege und dort alias ..='cd ..' anlege.
Dann meckert er erneut ueber den Fehler in der /.bashrc auf die selbe Art.

Ideen woran es liegen kann?
Die config meines Editors (vimrc) habe ich zwischenzeitlich auch geloescht, dass da nichts fuer komische leerzeichen o.ae. sorgt.
Unsichtbare komische Zeilenumbrueche o.ae. scheinen mir am warscheinlichsten, aber woher sollen die kommen, der Fehler tritt auch auf, wenn ich alles manuell eingebe und nichts kopiere.

Hier die .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 ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-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=yes

if [ -n "$force_color_prompt" ]; then
    if [ -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=yes
    else
    color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${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 ]; then
    test -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 -alF'
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; 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
#hi compiler, this file ends here. thanks!
 
EoF-Error nach der letzten Zeile deuten eigentlich meist auf nen offenen String hin (also ' oder " angefangen, aber nicht abgeschlossen) - sehe jetzt allerdings auch nichts dergleichen. Komisch ist natürlich, dass das nach Änderungen "random" auftritt - paste doch mal ne bashrc mit der der Fehler vorhanden ist.
 
ZuseZ3 schrieb:
Alternativ reicht es, wenn ich bei originaler .bashrc die Datei ~/.bash_aliases anlege und dort alias ..='cd ..' anlege.
Dann minimiere diesen Fehlerfall mal weiter. Nimm also wieder die funktionierende .bashrc und lege die ~/.bash_aliases zwar an, aber lass sie leer. Also "rm -f ~/.bash_aliases; touch ~/.bash_aliases" Dann fallen falsche Zeichen als Ursache schon mal aus.

Wenn das keine Probleme macht, versuchst du was möglichst einfaches ohne Sonderzeichen reinzuschreiben. "alias xxx=cd" oder sowas. Dann testen, ob das xxx tut was es soll, also ob der Alias wirklich funktioniert usw.
 
Zuletzt bearbeitet:
Probier mal dos2unix ~/.bashrc

Alternativ cat -v (glaube ich), zeigt seltsame Sonderzeichen. Ansonsten hexedit oder vim.

File ist okay.
Bash:
➜  /tmp bash         
[test@iusearchbtw tmp]$ source testrc
test@iusearchbtw:/tmp$
 
ZuseZ3 schrieb:
Unsichtbare komische Zeilenumbrueche o.ae. scheinen mir am warscheinlichsten,
Mit "hexdump -C dateiname" kann man sich ganz gut anschauen, was man in eine kleine Datei wirklich für Zeichen reingeschrieben hat.
 
Zuletzt bearbeitet:
Erstmal vielen Dank für die ganzen Antworten!
Hexdump o.ä. hatte ich kurz vorm Feierabend noch probiert aber nur Zeichensalat erhalten, schaue mir das aber nochmal genauer an.
Die bashrc bei der ein Fehler auftritt war u.a die selbe, nur mit folgender Zeile bei den Aliasen hinzugefügt:
alias dn='cd /home/ubuntu/yolo/darknet'
(Habe mir die Namen nicht ausgedacht )
Witzig auch, sobald der Fehler auftritt muss ich deutlich mehr Zeilen löschen (inkl default Zeilen), bis source ~/.bashrc wieder durchläuft.

@Termy war mir auch so bekannt, das verwunderte mich ja.

Dos2unix hatte ich überlegt, leider arbeite ich auch von einem Win10 Host aus, also könnte das tatsächlich ein Problem sein.

@mensch183 gute Idee mit der leeren Datei, ich probier es mal.

Vorhin war es im Allgemeinen so, dass der Fehler immer erst nach einigen Änderungen in der bashrc auftratt. Zusätzlich war es so, dass der Fehler aber auch nur nach wirklichen Änderungen auftratt.
Daher würde vim ~/.bashrc :wq nichts bewirken, ebenso tritt der Fehler direkt beim ersten mal source ~/.bashrc auf, oder gar nicht.
Das abspeichern verändert also anscheinend nichts am code.
Zuletzt haben mehrere bashsrc änderungen auf der ersten Instanz, die ich als Clonvorlage genommen habe, übrigends keine Probleme verursacht.

Naja ich versuche mal nacher hexdump -c bzw cat -v
 
Ein alias resultiert nicht in einer Subshell (.bashrc ist einfach ein Shell script). Ich sehe nicht wie die Pfade da einen Einfluss haben. Meine arch box hat weder /home/ubuntu noch irgendwas yolo...

Ich habe Kunden die mich zu Windows zwingen und da habe ich per default ein dos2unix auf absolut alles was dort via SCP reinkommt. Das produziert die absolut faszinierensten Fehler.

bash-aliases dagegen hat eine source Anweisung. Da interpretiert die ganze Suppe als Shell. Da koennten Probleme sein.
 
Irgendwie gehts ja in Richtung Zeichensatz-Verwirrung. Es kommt nicht das an, was ankommen soll. Was sagt denn "locale"? Vielleicht ist eine UTF8-Locale eingestellt, aber dein Terminalprogramm sendet was anderes? Funktionieren die deutschen Umlaute wie erwartet? Mir sagt "MobaXTerm" rein gar nichts. KA, was man da einstellen muss.

Was für eine Verbindung ist es eigentlich? ssh? Mal testweise einen anderen, weitverbreiteten Client probiert? Putty ist wohl bei Windows-Nutzern üblich.
 
Zuletzt bearbeitet:
MobaXTerm verwendet die LC_CTYPE oder LC_LANG nicht bei default soweit ich weiss. LC_LANG ist gesetzt.

MobaXTerm ist einer der besten (imo!) SSH, SCP und SSH+X11 Clients fuer Windows.
 
Ich sitze in den USA, deutsche Umlaute habe ich hier noch nicht probiert.
Daher war mir der Zeichensatz aber auch nicht direkt in den Sinn gekommen, obwohl ich da tatsächlich mal nen gut verstecktes Problem hatte. Notier ich mir auch mal.

Dank Unternehmensproxy bekomme ich über putty keine Bilder angezeigt, über MoabXTerm ist es furchtbar langsam aber geht.
Zum überprüfen der Ergebnisse der Neuronalen Netze langts immerhin gerade so..
 
Ja, ich auch, Gruesse aus Dixie. Allerdings hier nie Probleme daher mit MobaXTerm gehabt, aber auch daher auch keine Umlaute bei mir. ;)

Bilder ueber SSH sind vermutlich X11 forwarding, das ist by design langsam.
 
ZuseZ3 schrieb:
lediglich eine andere availability zone
Andere Zone=Anderes Environment ?
Sind die Umgebungsvariablen wirklich gleich auf beiden Instanzen ? env | sort bzw env|sort|md5sum

Vielleicht ein paar seltsame Effekte durch nicht-ASCII-Dateinamen ?
 
Dos2Unix hilft nicht, Hexdump -C zeigt ebenfalls nichts auffaelliges an.

Hier die Daten vom Server
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Der Originalserver hat nun auch Probleme gehabt, als ich bash_aliases genutzt habe.
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben