Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7977873
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 4, 20262026-06-04T09:20:06+00:00 2026-06-04T09:20:06+00:00

I’ve got the following variable set in my cygwin $HOME/.bashrc PATH=/bin:/usr/sbin:/cygdrive/c/Program Files/Java/jdk1.6.0_26/bin:$PATH Problem is

  • 0

I’ve got the following variable set in my cygwin $HOME/.bashrc

PATH=/bin:/usr/sbin:"/cygdrive/c/Program Files/Java/jdk1.6.0_26/bin":$PATH

Problem is that when I login and the .bashrc gets executed, I get starting duplicates as follows:

Dragos@dragos ~
$ echo $PATH | tr ':' '\n'
/bin
/usr/sbin
/cygdrive/c/Program Files/Java/jdk1.6.0_26/bin
/bin
/usr/sbin
/cygdrive/c/Program Files/Java/jdk1.6.0_26/bin
/usr/local/bin
/usr/bin
/cygdrive/c/WINDOWS
/cygdrive/c/WINDOWS/system32
/cygdrive/c/WINDOWS/System32/Wbem
/cygdrive/c/curl
/
/cygdrive/c/gnupg
/cygdrive/c/Progra~1/cvsnt
/cygdrive/c/Progra~1/GNU/WinCvs 2.0
/cygdrive/c/Progra~1/Notepad++
/cygdrive/c/Progra~1/PuTTY
/cygdrive/c/Progra~1/WinSCP
/cygdrive/c/Python26
/cygdrive/c/Python26/Lib/site-packages/PyQt4/bin
/cygdrive/c/Python26/Scripts
/usr/bin
/usr/lib/lapack

Does anyone know what causes this?

Here’s my .bashrc

$ cat ~/.bashrc    
# base-files version 3.7-1

# To pick up the latest recommended .bashrc content,
# look in /etc/defaults/etc/skel/.bashrc

# Modifying /etc/skel/.bashrc directly will prevent
# setup from updating it.

# The copy in your home directory (~/.bashrc) is yours, please
# feel free to customise it to create a shell
# environment to your liking.  If you feel a change
# would be benificial to all, please feel free to send
# a patch to the cygwin mailing list.

# User dependent .bashrc file

# Shell Options
# #############

# See man bash for more options...

# Don't wait for job termination notification
# set -o notify

# Don't use ^D to exit
# set -o ignoreeof

# Use case-insensitive filename globbing
# shopt -s nocaseglob

# Make bash append rather than overwrite the history on disk
# shopt -s histappend

# When changing directory small typos can be ignored by bash
# for example, cd /vr/lgo/apaache would find /var/log/apache
# shopt -s cdspell


# Completion options
# ##################

# These completion tuning parameters change the default behavior of bash_completion:

# Define to access remotely checked-out files over passwordless ssh for CVS
# COMP_CVS_REMOTE=1

# Define to avoid stripping description in --option=description of './configure --help'
# COMP_CONFIGURE_HINTS=1

# Define to avoid flattening internal contents of tar files
# COMP_TAR_INTERNAL_PATHS=1

# If this shell is interactive, turn on programmable completion enhancements.
# Any completions you add in ~/.bash_completion are sourced last.
# case $- in
#   *i*) [[ -f /etc/bash_completion ]] && . /etc/bash_completion ;;
# esac


# History Options
# ###############

# Don't put duplicate lines in the history.
# export HISTCONTROL="ignoredups"

# Ignore some controlling instructions
# export HISTIGNORE="[   ]*:&:bg:fg:exit"

# Whenever displaying the prompt, write the previous line to disk
# export PROMPT_COMMAND="history -a"


# Aliases
# #######

# Some example alias instructions
# If these are enabled they will be used instead of any instructions
# they may mask.  For example, alias rm='rm -i' will mask the rm
# application.  To override the alias instruction use a \ before, ie
# \rm will call the real rm not the alias.

# Interactive operation...
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

# Default to human readable figures
# alias df='df -h'
# alias du='du -h'

# Misc :)
# alias less='less -r'                          # raw control characters
# alias whence='type -a'                        # where, of a sort
# alias grep='grep --color'                     # show differences in colour

# Some shortcuts for different directory listings
alias ls='ls -hF --color=tty'                 # classify files in colour
# alias dir='ls --color=auto --format=vertical'
# alias vdir='ls --color=auto --format=long'
# alias ll='ls -l'                              # long list
# alias la='ls -A'                              # all but . and ..
# alias l='ls -CF'                              #

# Functions
# #########

# Some example functions
# function settitle() { echo -ne "\e]2;$@\a\e]1;$@\a"; }

# Notepad++ function
# Pass in a UNIX path
# Starts notepad++ given a UNIX path argument
function notepadpp() { 
  local notepadUnixPath="/cygdrive/c/Program Files/Notepad++/notepad++.exe"
  #local notepadArgPath=$(eval $(echo cygpath -w -a "$*"))
  local notepadArgPath=`cygpath -w -a "$*"`
  "$notepadUnixPath" -multiInst "$notepadArgPath" &
}

alias notepad++=notepadpp

# Explorer function
# Pass in a UNIX path
# Starts explorer given a UNIX path argument
function explorer() { 
  local explorerArgPath=`cygpath -w -a "$*"`
  cmd /C start "" "$explorerArgPath" &
}

alias vi=vim

# Change filename starting with prefix string to another prefix string
alias mvprefix='$HOME/mvprefix.sh'

# Change filename ending with suffix string to another suffix string
alias mvsuffix='$HOME/mvsuffix.sh'

# Change filename ending with suffix string to a string prefixed with todays date
alias todaysuffix='$HOME/todaysuffix.sh'

# Generate secure passwords by default 
alias pwgen='pwgen -y -c -s -n'

export INPUTRC=$HOME/.inputrc
export EDITOR=vim
export PATH=/bin:/usr/sbin:"/cygdrive/c/Program Files/Java/jdk1.6.0_26/bin":$PATH

# Overwrite DOS env variable APPDATA with our own for installing perl CPANPLUS
export APPDATA=$HOME

Here’s my .bash_profile

$ cat .bash_profile
# base-files version 3.7-1

# To pick up the latest recommended .bash_profile content,
# look in /etc/defaults/etc/skel/.bash_profile

# Modifying /etc/skel/.bash_profile directly will prevent
# setup from updating it.

# The copy in your home directory (~/.bash_profile) is yours, please
# feel free to customise it to create a shell
# environment to your liking.  If you feel a change
# would be benifitial to all, please feel free to send
# a patch to the cygwin mailing list.

# ~/.bash_profile: executed by bash for login shells.

# source the system wide bashrc if it exists
if [ -e /etc/bash.bashrc ] ; then
  source /etc/bash.bashrc
fi

# source the users bashrc if it exists
if [ -e "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi

# Set PATH so it includes user's private bin if it exists
# if [ -d "${HOME}/bin" ] ; then
#   PATH=${HOME}/bin:${PATH}
# fi

# Set MANPATH so it includes users' private man if it exists
# if [ -d "${HOME}/man" ]; then
#   MANPATH=${HOME}/man:${MANPATH}
# fi

# Set INFOPATH so it includes users' private info if it exists
# if [ -d "${HOME}/info" ]; then
#   INFOPATH=${HOME}/info:${INFOPATH}
# fi

Here’s my /etc/bash.bashrc

$ cat /etc/bash.bashrc
# To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to the
# public domain worldwide. This software is distributed without any warranty.
# You should have received a copy of the CC0 Public Domain Dedication along
# with this software.
# If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

# base-files version 4.1-1

# /etc/bash.bashrc: executed by bash(1) for interactive shells.

# The latest version as installed by the Cygwin Setup program can
# always be found at /etc/defaults/etc/bash.bashrc

# Modifying /etc/bash.bashrc directly will prevent
# setup from updating it.

# System-wide bashrc file

# Check that we haven't already been sourced.
([[ -z ${CYG_SYS_BASHRC} ]] && CYG_SYS_BASHRC="1") || return

# If not running interactively, don't do anything
[[ "$-" != *i* ]] && return

# Set a default prompt of: user@host and current_directory
PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '

# Uncomment to use the terminal colours set in DIR_COLORS
# eval "$(dircolors -b /etc/DIR_COLORS)"

I don’t modify $PATH in my $HOME/.bashrc anywhere other than the set PATH= command above.

If I prepend only one path to $PATH, that would get duplicated as well:

PATH="/cygdrive/c/Program Files/Java/jdk1.6.0_26/bin":$PATH

Results in:

Dragos@dragos ~
$ echo $PATH | tr ':' '\n'
/cygdrive/c/Program Files/Java/jdk1.6.0_26/bin
/cygdrive/c/Program Files/Java/jdk1.6.0_26/bin
/usr/local/bin
/usr/bin
/cygdrive/c/WINDOWS
/cygdrive/c/WINDOWS/system32
/cygdrive/c/WINDOWS/System32/Wbem
/cygdrive/c/curl
/
/cygdrive/c/gnupg
/cygdrive/c/Progra~1/cvsnt
/cygdrive/c/Progra~1/GNU/WinCvs 2.0
/cygdrive/c/Progra~1/Notepad++
/cygdrive/c/Progra~1/PuTTY
/cygdrive/c/Progra~1/WinSCP
/cygdrive/c/Python26
/cygdrive/c/Python26/Lib/site-packages/PyQt4/bin
/cygdrive/c/Python26/Scripts
/usr/bin
/usr/lib/lapack

So… Why the duplicates?

Addendum:

I found that I’m executing bash twice in my C:\cygwin\Cygwin.bat
The reason is that I have a context menu command to “Open Bash Here” that passes
a starting path to C:\cygwin\Cygwin.bat

Here’s my C:\cygwin\Cygwin.bat

@echo off

C:

set PATH=%PATH%;C:\cygwin\bin

REM SHELL needed for any screen instances started from bash
set SHELL=/bin/bash
set HOME=C:\cygwin\home\Dragos
set HOMEDRIVE=C:
set HOMEPATH=\cygwin\home\Dragos

REM 

if not [%1]==[] (
  C:\cygwin\bin\cygpath %1 > tmpFile
  set /p startingpath= < tmpFile
  del tmpFile
)

if "%startingpath%"=="" start C:\cygwin\bin\mintty.exe --icon /Cygwin-Terminal.ico --size 140,50 --exec /bin/bash --login -c "exec /bin/bash -rcfile ~/.bashrc"
if not "%startingpath%"=="" start C:\cygwin\bin\mintty.exe --icon /Cygwin-Terminal.ico --size 140,50 --exec /bin/bash --login -c "cd '%startingpath%'; exec /bin/bash -rcfile ~/.bashrc"
exit

Addendum:

Figured out that I need to pass --noprofile --norc to bash when calling bash.
Here’s the updated C:\cygwin\Cygwin.bat

@echo off

C:

set PATH=%PATH%;C:\cygwin\bin

REM SHELL needed for any screen instances started from bash
set SHELL=/bin/bash
set HOME=C:\cygwin\home\Dragos
set HOMEDRIVE=C:
set HOMEPATH=\cygwin\home\Dragos

REM 

if not [%1]==[] (
  C:\cygwin\bin\cygpath %1 > tmpFile
  set /p startingpath= < tmpFile
  del tmpFile
)

if "%startingpath%"=="" start C:\cygwin\bin\mintty.exe --icon /Cygwin-Terminal.ico --size 140,50 --exec /bin/bash --login
if not "%startingpath%"=="" start C:\cygwin\bin\mintty.exe --icon /Cygwin-Terminal.ico --size 140,50 --exec /bin/bash --noprofile --norc --login -c "cd '%startingpath%'; exec /bin/bash -rcfile ~/.bashrc"

exit
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-04T09:20:07+00:00Added an answer on June 4, 2026 at 9:20 am

    I don’t have Cygwin installed, and I don’t have a Windows machine, so I can’t give you a boatload of details.

    See if the man bash page can help you. In normal BASH, the /etc/profile, /etc/bashrc, the $HOME/.bash_profile, the $HOME/.bashrc, and sometimes the $HOME/.profile are all read in depending whether this is a login shell or not. Cygwin has it’s own special versions of each of these files in the /etc directory. However, there’s also other scripts that get invoked and can affect your Cygwin environment. For example, there are special scripts to import Windows environment variables including %PATH%.

    In Cygwin, the default is to include the Windows %PATH% variable as part of the Cygwin path. It’s actually a general import of all Windows environment variables (and depending upon the installation, the \ is sometimes converted to a / and short directory names are used).

    If you open xterm windows and not standard Windows console windows for your Cygwin command line, you’ll also have to check the xserve script (or whatever it’s called) because that also imports a lot of stuff into the Cygwin environment.

    I’ve used Cygwin in the past, and every time I use Cygwin, I find myself chasing down these exact things, plus a few other issues: For example, the default Kornshell load environment script has a bug in it. I believe they have a literal “^G” instead of a Ctrl-G, or maybe it was another control character. I can’t remember. All I know is I spend about an hour or two cleaning up my Cygwin environment every time I install it. I like Cygwin, but it can be a pain.

    Sorry I can’t give you more specific directions.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

link Im having trouble converting the html entites into html characters, (&# 8217;) i
I've got a string that has curly quotes in it. I'd like to replace
I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
I'm using v2.0 of ClassTextile.php, with the following call: $testimonial_text = $textile->TextileRestricted($_POST['testimonial']); ... and
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
i got an object with contents of html markup in it, for example: string
I have thousands of HTML files to process using Groovy/Java and I need to
I have a bunch of posts stored in text files formatted in yaml/textile (from
I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti
I have just tried to save a simple *.rtf file with some websites and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.