This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: chere not seeing my preferred $HOME


> Gesendet: Donnerstag, 30. Juni 2016 um 21:55 Uhr
> Von: "Nellis, Kenneth"
> Hello. http://www.cygwin.com/acronyms/#PCYMTNQREAIYR

Sorry, forgot, thanks for pointing it out.
  
> I simply want chere to run my .profile before it presents
> me with the bash prompt.

How to achieve that depends on your shell.
For example, .bash_profile is not read for every bash instance.
See section INVOCATION of `man bash`, where details are
given which file is read when (or not).
My solution is to conditionally read `.profile` from the shell-specific
`.XYZshrc` file. See a part of my `.bashrc` below, as an appendix.

> I guess the problem is knowing how to tell chere what
> my Cygwin $HOME is.

My understanding is that for the same cygwin user,
$HOME should always have the same value,
regardless of where you used "Bash Prompt Here".
Clicking that in C:\cygwin\etc yields a shell that behaves
like this for me:

/etc> echo $HOME
/cygdrive/c/blome # That's what I have configured.

> Using the word "domain" generically, there is my Windows
> domain ($HOME is C:\Users\KNellis) and my Cygwin domain
> ($HOME is C:\cygwin\home\knellis).

I think I still don't understand what you mean by domain.

> > > Hoping I can keep the two domains separate.

And I'm not sure what you mean by "keep separate".
The paths you gave above are directories, which are obviously
(hopefully ;-) already separate.

Under Cygwin, in a shell, $HOME should have a value with slashes,
`/home/knellis` in your case, true?

In a windows terminal ("Command Prompt"), `$HOME` does not
refer to an environment variable (those would use `%XYZ%`).
For me, the environment variable named HOME is not set.
`echo %HOME%` yields literally `echo %HOME%`.
Looking through the output of `set`, there are two variables
that contain my windows user's home directory, HOMEPATH
(without the drive letter) and USERPROFILE.

> chere appears to be using my Windows domain,

That would be surprising indeed.

> which doesn't have a .bash_profile,
> but I'd like it to use my Cygwin domain.

> > > chere> echo $HOME; cygpath -w $HOME
> > > /cygdrive/c/Users/KNellis
> > > C:\Users\KNellis

What does "chere" mean here?
How exactly did you get this shell?
Which commands did you type, what did you click?

Repeat: 
> > How come you have differing values for $HOME in some contexts?
> Different domains.
In the context of my above questions, can you give a more precise answer?

Rainer 


----
# Regarding initialization files, Bash knows 3 different shells:
# o A "normal", non-interactive shell, such as in "bash -c 'echo Hello'",
#   does not load any file.
# o An interactive shell, one that reads commands from a terminal, is
#   supposed to read "~/.bashrc".
# o A login shell is supposed to read "~/.profile".

# When an interactive login shell is started, Bash loads the .bashrc
# first, then the .profile.

# --------------------------------------------------------------------
#debug="true";
note() { echo 1>&2 "$@"; }
c() { if [ ! "" = "${debug-}" ]; then note "$*"; fi; }

# Reentrance handling

if [ ! "" = "${home_bashrc_was_read-}" ]; then
    c ".bashrc: Warning, .bashrc reentered (possible recursion).";

    # FIXME: Simply continuing would make it easier to reload this file.

    if [ "" = "${debug-}" ]; then
	c ".bashrc stopped.";
	return 0;
    else
	c "Continuing .bashrc (because we are in debug mode).";
    fi;
fi;

# Keep this here, don't move it to the end of the file.
# We just want to know whether it was tried to read
# this, not whether it was successful.
home_bashrc_was_read="true";		# Do not export this!

c .bashrc running...

# --------------------------------------------------------------------
# FIXME: This assumes that the $HOME value is valid, which it may not
# be.  For example, on Windows, $HOME may be "C:/" instead of anything
# actually user-specific.

if [ "" = "${HOME_PROFILE_WAS_READ-}" ]; then
    c ".bashrc: Sourcing '.profile'...";
    . "$HOME/.profile";
    c ".bashrc: Sourced '.profile'.";
fi;
----

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]