gem list and . ~/.profile

Hello,

So, I have something happening that I don't understand. I am on OS
10.5.6 and followed Dan Benjamin's (Hivelogic) advice on how to
install Ruby, MySQL.... As he suggests, I added . ~/.bash_login with
the path for the MySQL installation. I also added . ~/.profile with
the path for the Ruby installation.

Now, when I start Terminal and run:
% ruby -v # -> version 1.8.6
% gem list # -> I get a list with various versions of active record,
actionmailer, rake and... no mysql (2.7) gem

Then if I run:
% . ~/.profile
% ruby -v # -> version 1.8.7
% gem list # Get updated gem list including mysql gem

But if I close that terminal window and open a new one -- the above is
reset.

Why does that happen? and how do I get the path to load automatically?

Thanks,
Elle

Try putting this stuff in a file called .bashrc.

elle wrote:

Hello,

So, I have something happening that I don't understand. I am on OS
10.5.6 and followed Dan Benjamin's (Hivelogic) advice on how to
install Ruby, MySQL.... As he suggests, I added . ~/.bash_login with
the path for the MySQL installation. I also added . ~/.profile with
the path for the Ruby installation.

Now, when I start Terminal and run:
% ruby -v # -> version 1.8.6
% gem list # -> I get a list with various versions of active record,
actionmailer, rake and... no mysql (2.7) gem

Then if I run:
% . ~/.profile
% ruby -v # -> version 1.8.7
% gem list # Get updated gem list including mysql gem

But if I close that terminal window and open a new one -- the above is
reset.

Why does that happen? and how do I get the path to load automatically?

Put the settings ~/.bash_profile

My ~/.profile has:

export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:
$PATH"

And my ~/.bash_profile has the following:

elle wrote:

My ~/.profile has:

...

And my ~/.bash_profile has the following:

...

What rules should I add to it? and where do I add them?

You want either a .profile or a .bash_profile, not both. Once bash sees the .bash_profile, it won't look for the .profile; that's why you're having to source it manually. From bash(1):

     When bash is invoked as an interactive login shell, or as a
     non-inter- active shell with the --login option, it first
     reads and executes com- mands from the file /etc/profile,
     if that file exists. After reading that file, it looks for
     ~/.bash_profile, ~/.bash_login, and ~/.profile, in that
     order, and reads and executes commands from the first one
     that exists and is readable.

I actually prefer just to have a .profile, but if you have to support other sh-derivatives, .bash_profile lets you play it safe.

elle wrote:

I am on OS 10.5.6

And my ~/.bash_profile has the following:

for a in local $(ls /opt/ | grep -v local | grep -v gentoo); do

You have an /opt/gentoo directory on Mac OS X? If you've got emerge working, I'd love to know how.

Thank you for explaining. Just to verify that my path will be set
correctly, I should change:

PATH="/opt/subversion/bin:${PATH}"
export PATH

to

PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/
subversion/bin:${PATH}"
export PATH

is that correct?

No /opt/gentoo directory. Only /opt/subversion and /opt/git
Sorry

elle wrote:

elle wrote:

My ~/.profile has:

...

And my ~/.bash_profile has the following:

...

What rules should I add to it? and where do I add them?

You want either a .profile or a .bash_profile, not both. Once bash sees
the .bash_profile, it won't look for the .profile; that's why you're
having to source it manually. From bash(1):

     When bash is invoked as an interactive login shell, or as a
     non-inter- active shell with the --login option, it first
     reads and executes com- mands from the file /etc/profile,
     if that file exists. After reading that file, it looks for
     ~/.bash_profile, ~/.bash_login, and ~/.profile, in that
     order, and reads and executes commands from the first one
     that exists and is readable.

I actually prefer just to have a .profile, but if you have to support
other sh-derivatives, .bash_profile lets you play it safe.

Thank you for explaining. Just to verify that my path will be set
correctly, I should change:

PATH="/opt/subversion/bin:${PATH}"
export PATH

to

PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/
subversion/bin:${PATH}"
export PATH

is that correct?

No; there was no problem with what you had, just that you split it across two or three files. You only should have exactly one of .profile, .bash_profile, and .bash_login.

Sorry to be difficult but I actually have all 3 files.
Which should I delete?
And then, what happens to the information within?

elle wrote:

>> elle wrote:
>>> My ~/.profile has:
>> ...

>>> And my ~/.bash_profile has the following:
>> ...

>>> What rules should I add to it? and where do I add them?
>> You want either a .profile or a .bash_profile, not both. Once bash sees
>> the .bash_profile, it won't look for the .profile; that's why you're
>> having to source it manually. From bash(1):

>> When bash is invoked as an interactive login shell, or as a
>> non-inter- active shell with the --login option, it first
>> reads and executes com- mands from the file /etc/profile,
>> if that file exists. After reading that file, it looks for
>> ~/.bash_profile, ~/.bash_login, and ~/.profile, in that
>> order, and reads and executes commands from the first one
>> that exists and is readable.

>> I actually prefer just to have a .profile, but if you have to support
>> other sh-derivatives, .bash_profile lets you play it safe.

> Thank you for explaining. Just to verify that my path will be set
> correctly, I should change:

> PATH="/opt/subversion/bin:${PATH}"
> export PATH

> to

> PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/
> subversion/bin:${PATH}"
> export PATH

> is that correct?

No; there was no problem with what you had, just that you split it
across two or three files. You only should have exactly one of
.profile, .bash_profile, and .bash_login.

Sorry, reread your post -- Just confused with an earlier sentence:

elle wrote:

elle wrote:

elle wrote:

My ~/.profile has:

...

And my ~/.bash_profile has the following:

...

What rules should I add to it? and where do I add them?

You want either a .profile or a .bash_profile, not both. Once bash sees
the .bash_profile, it won't look for the .profile; that's why you're
having to source it manually. From bash(1):
     When bash is invoked as an interactive login shell, or as a
     non-inter- active shell with the --login option, it first
     reads and executes com- mands from the file /etc/profile,
     if that file exists. After reading that file, it looks for
     ~/.bash_profile, ~/.bash_login, and ~/.profile, in that
     order, and reads and executes commands from the first one
     that exists and is readable.
I actually prefer just to have a .profile, but if you have to support
other sh-derivatives, .bash_profile lets you play it safe.

Thank you for explaining. Just to verify that my path will be set
correctly, I should change:
PATH="/opt/subversion/bin:${PATH}"
export PATH
to
PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/
subversion/bin:${PATH}"
export PATH
is that correct?

No; there was no problem with what you had, just that you split it
across two or three files. You only should have exactly one of
.profile, .bash_profile, and .bash_login.

Sorry to be difficult but I actually have all 3 files.
Which should I delete?
And then, what happens to the information within?

Concatenate them. For example, something like:

cp /dev/null profile
for f in ~/.profile ~/.bash_login ~/.bash_profile
do
     mv $f orig$f
     cat $f >> profile
done
mv profile ~/.profile

Jeff Schwab wrote:

elle wrote:

elle wrote:

elle wrote:

My ~/.profile has:

...

And my ~/.bash_profile has the following:

...

What rules should I add to it? and where do I add them?

You want either a .profile or a .bash_profile, not both. Once bash sees
the .bash_profile, it won't look for the .profile; that's why you're
having to source it manually. From bash(1):
     When bash is invoked as an interactive login shell, or as a
     non-inter- active shell with the --login option, it first
     reads and executes com- mands from the file /etc/profile,
     if that file exists. After reading that file, it looks for
     ~/.bash_profile, ~/.bash_login, and ~/.profile, in that
     order, and reads and executes commands from the first one
     that exists and is readable.
I actually prefer just to have a .profile, but if you have to support
other sh-derivatives, .bash_profile lets you play it safe.

Thank you for explaining. Just to verify that my path will be set
correctly, I should change:
PATH="/opt/subversion/bin:${PATH}"
export PATH
to
PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/
subversion/bin:${PATH}"
export PATH
is that correct?

No; there was no problem with what you had, just that you split it
across two or three files. You only should have exactly one of
.profile, .bash_profile, and .bash_login.

Sorry to be difficult but I actually have all 3 files.
Which should I delete?
And then, what happens to the information within?

Concatenate them. For example, something like:

cp /dev/null profile
for f in ~/.profile ~/.bash_login ~/.bash_profile
do
     mv $f orig$f
     cat $f >> profile

Whoops, you'd have to swap those lines. Warning: I haven't actually run this code.

Did not work well.
I changed it to the following:

cp -p ~/.profile ~/.profile.orig
cp -p ~/.bash_login ~/.bash_login.orig
cp -p ~/.bash_profile ~/.bash_profile.orig
cp /dev/null profile
for f in ~/.profile ~/.bash_login ~/.bash_profile; do
cat $f >> profile
mv profile ~/.profile
done

What it did is, it placed .bash_profile content into .profile insetad
of adding it.

Solved.
Both the ~/.profile and ~/.bash_login had the same path defined but
did not load in login.
Adding the path to ~/.bash_profile fixed the problem.
Checked:

which mysql
which svn
which git
gem list

and all is good.

Half way through, I realised it wasn't really a rails problem -- so,
apologies for that.
Hopefully, this will help someone else.

Thanks,
Elle