Virtualenv - ($ source ~/.bashrc bash: /home/tw_im/.bashrc: Zeile 121: Syntaxfehler: Unerwartetes Dateiende.)

Code-Stücke können hier veröffentlicht werden.
Antworten
tW_iM
User
Beiträge: 3
Registriert: Freitag 7. April 2023, 12:18

Hallo in die Runde, ich bin Pythonneuling und dabei das Buch " Test-Driven Development with Python_ Obey the Testing Goat_ Using Django, Selenium, and JavaScript" von Harry J. W. Percival zu bearbeiten.

Beim einbinden des virtualenv wird mir obwohl ich nur die letzen drei zeilen code geschrieben habe ( export / source) trotz mehrmaligem versuchen ein syntax error ausgegeben.
liegt der fehler bei mir oder ist der code fehlerhaft ?

Danke im vorraus für die hilfe!

Code: Alles auswählen

# ~/.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

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh
 
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nach der Meldung wuerde ich ein Problem in /usr/local/bin/virtualenvwrapper.sh vermuten. Das ist irgendwie syntaktisch nicht korrekt. Eine fehlende Klammer oder so.
tW_iM
User
Beiträge: 3
Registriert: Freitag 7. April 2023, 12:18

alles klar danke, mir fehlt leider das wissen wie ich diesen fehler beheben kann.
Hast du einen tipp für mich wie ich am besten vorgehen sollte ?
Hab den code im bashrc mehrmals überflogen und keine fehlenden klammern bemerkt. Es ist aber auch die erste bashrc datei die ich lese also verstehen tue ich wenig bis garnichts was dort steht.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Da ist ja auch nicht, was ich vermute. Sondern die virtualenvwrapper.sh musst du dir anschauen.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Der Fehler liegt schon in der ``.bashrc``, da wurde offenbar aus dem Code-Teil der die „completion“ aktiviert eine Zeile mit einem ``fi`` entfernt. Hier wieder ergänzt, mit einem Kommentar:

Code: Alles auswählen

# 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  # <- Das hier fehlte.
fi
Also die Vermutung „fehlende schliessende Klammer“ stimmte schon vom vom Grundsatz her. Es war halt nicht eine ”echte” Klammer, aber bei einem mit ``if`` und ``fi`` ”geklammerten” Anweisungsblock fehlte das ``fi`` um den Block abzuschliessen und damit kam das Dateiende für die Bash unerwartet. Was die Fehlermeldung dann auch genau so sagt.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
tW_iM
User
Beiträge: 3
Registriert: Freitag 7. April 2023, 12:18

Super, ich danke dir!

ware etwas ernüchternd schon bei der einleitung des buches "zu stranden" ^^
:arrow: dann kanns jetzt weiter gehen!

noch ein schönes Wochenende.
Antworten