3

I want to install Anaconda on Ubuntu WSL, and when I want to activate the installation by running the command source ~/.bashrc, I get the following error:

-bash: export: `.~/.bashrc': not a valid identifier

After running cat ~/.bashrc I get :

# ~/.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
export PATH="$PATH":/home/marwa/anaconda3/bin .~/.bashrc

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/marwa/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/marwa/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/marwa/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/marwa/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

export PATH="$PATH":/home/marwa/anaconda3/bin .~/.bashrc
export PATH="$PATH":/home/marwa/anaconda3/bin . /home/marwa/.bashrc

Then I run diff {/etc/skel,~}/.bashrc, I get:

117a118,136
> export PATH="$PATH":/home/marwa/anaconda3/bin .~/.bashrc
>
> # >>> conda initialize >>>
> # !! Contents within this block are managed by 'conda init' !!
> __conda_setup="$('/home/marwa/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
> if [ $? -eq 0 ]; then
>     eval "$__conda_setup"
> else
>     if [ -f "/home/marwa/anaconda3/etc/profile.d/conda.sh" ]; then
>         . "/home/marwa/anaconda3/etc/profile.d/conda.sh"
>     else
>         export PATH="/home/marwa/anaconda3/bin:$PATH"
>     fi
> fi
> unset __conda_setup
> # <<< conda initialize <<<
>
> export PATH="$PATH":/home/marwa/anaconda3/bin .~/.bashrc
> export PATH="$PATH":/home/marwa/anaconda3/bin . /home/marwa/.bashrc

What's the problem?

4
  • You probably have to use source /home/username/.bashrc.
    – heynnema
    Jul 2, 2019 at 21:07
  • @EliahKagan I followed the steps of digitalocean.com/community/tutorials/…
    – Marwa Faik
    Jul 2, 2019 at 23:18
  • In second last line export PATH="$PATH":/home/marwa/anaconda3/bin .~/.bashrc there need to be a space between the dot and the tilde, as in . ~/.bashrc
    – Soren A
    Jul 3, 2019 at 13:38
  • Rather than adding a space or manually expanding the ~, neither of which would fix the underlying problem or even suppress the errors (because . and / are still invalid in variable names), the while line should just be deleted, as should two of the other export lines. Since posting this answer, I have also added something to my answer on the proposed dupe target that briefly summarizes the case of arguments to export commands (or entire export lines) that should just be removed. Jul 5, 2019 at 19:59

1 Answer 1

2

You appear to have manually edited .bashrc separately from the installation of Anaconda, though I can't be 100% sure, as I suppose a bug in the Anaconda installer (or running it in an unusual way) might cause this. This may have been completely unintentional on your part (see below).

You have this line in .bashrc before the code Anaconda (says that it) automatically added:

export PATH="$PATH":/home/marwa/anaconda3/bin .~/.bashrc

And you have these two lines after the automatically added Anaconda code:

export PATH="$PATH":/home/marwa/anaconda3/bin .~/.bashrc
export PATH="$PATH":/home/marwa/anaconda3/bin . /home/marwa/.bashrc

You should simply delete all three of those lines. One way to do this is to back up the file and then edit it in nano:

cp ~/.bashrc ~/.bashrc.old
nano ~/.bashrc

Once in the editor, find the lines and deleted them. Then save the file and quit.

If you prefer, either or both of the backing up and the editing can be done graphically. You could use your graphical file browser to make the backup copy and whatever graphical text editor you like, such as Gedit, to edit the file. (Just don't use a word processor.)


This is, strictly speaking, a case of the situation described there. But I've posted this answer because it is a somewhat special case, in that you should just remove the wrong export lines without attempting to fix or even replace them. The instructions above identify which lines should be removed and say how to remove them. This section explains why.

The reason you should delete those three lines rather than attempt to keep any part of them is that they are doing two things, one of which is unnecessary, and the other of which is wrong and causing errors. They're unnecessary because the code Anaconda added already places /home/marwa/anaconda3/bin in your $PATH. They're wrong because you shouldn't pass .~/.bashrc, ., or /home/marwa/.bashrc as arguments to the export command.

The export command is for exporting shell variables so they become environment variables for programs run by the shell. Each argument you pass to it can take two forms: a name without an equals sign, which exports the variable of that name, and a name followed by an equals sign and a value, which assigns the value to the variable of that name and exports the variable. Since there is no = sign in .~/.bashrc, ., or /home/marwa/.bashrc, you are attempting to export variables of those names. They are not valid variable names, so you get errors.

Unless you recall editing .bashrc manually yourself, you might be wondering why those lines are present. I believe the most likely way to get this problem is if you attempted to add the unnecessary line export PATH="$PATH":/home/marwa/anaconda3/bin to .bashrc (unnecessary because Anaconda's installer already takes care of this) using a command like echo 'export PATH="$PATH":/home/marwa/anaconda3/bin' and attempted to apply the changes in the current shell by running . ~/.bashrc... but ended up accidentally tacking . ~/.bashrc, or something that was intended to be that, onto the end of the export command, perhaps multiple times.

Not the answer you're looking for? Browse other questions tagged .