Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I added some data to my .bash_profile to run two aliases ruby version 19 and the proper gems. As soon as I added the data I could not longer run any commands such as the MacPorts command port nor the command mate to run TextMate. As soon as I deactivated .bash_profile and .bash_login and even .bash_history all was well again. .bash_history got regenerated and soon thereafter I got .bash_profile reinstated with my badly needed aliases, but then I lost the option to run these commands again. Here is some of the output of all these files:

jaspersmbp:~ jasper$ cat .bash_profile
    alias ruby='/opt/local/bin/ruby1.9'
    alias gem='/opt/local/bin/gem'
jaspersmbp:~ jasper$ cat .bash_login
jaspersmbp:~ jasper$ cat .bashrc
jaspersmbp:~ jasper$ cat .profile
    #Django path
    export PATH=/opt/local/bin:opt/local/sbin:/opt/local/lib/python2.4/site-packages/django/bin:$PATH
    # Apache alias
    alias apacherestart='sudo /opt/local/apache2/bin/apachectl -k restart'
    #Subversion OSX for Eclips Joomla Development
    export PATH=/opt/subversion/bin:$PATH
    #echo $PATH
    # Your previous /Users/jasper/.profile file was backed up as /Users/jasper/.profile.macports-saved_2012-05-18_at_09:47:58
    # MacPorts Installer addition on 2012-05-18_at_09:47:58: adding an appropriate PATH variable for use with MacPorts.
    export PATH=/opt/local/bin:/opt/local/sbin:$PATH
    # Finished adapting your PATH environment variable for use with MacPorts.

Does anyone know why making .bash_profile active anihilates the use of commands such as mate and port? I really need .bash_profile to work so I can use aliases and I need MacPorts port command for all kinds software.

share|improve this question
I'm confused: is MacPorts generating some of your dotfiles? If so, exactly which files? This seems like a terrible idea.. – user13742 Jun 10 '12 at 11:24
up vote 0 down vote accepted

It looks like MacPort is generating your configuration files, and messing up your PATH and such. The easiest way to fix this is by doing it yourself - disable MacPort generation/creation of the dotfiles concerning your path and aliases, remove the .bash_profile and .profile files and then append the following to the ~/.bashrc file:

# define aliases
alias ruby='ruby1.9'
alias apacherestart='sudo apachectl -k restart'

# define hist properties

# define path to programs

# define manpath

# export env vars

Start a new terminal and run echo $PATH to check that everything is in there and then test a couple of commands installed under /opt/local/bin. Since all the directories in the above PATH= statement are now in your PATH you don't need aliases that use absolute paths to the binary - for example you don't need the alias for gem anymore because you can just run gem.

Update: If your ~/.bashrc is not sourced put source ~/.bashrc in a clean ~/.bash_profile.

share|improve this answer
Here is my current PATH $ echo $PATH /opt/local/bin:/opt/local/sbin:/opt/subversion/bin:/opt/local/bin:opt/local/sbin‌​:/opt/local/lib/python2.4/site-packages/django/bin:/usr/bin:/bin:/usr/sbin:/sbin:‌​/usr/local/bin:/opt/X11/bin:/usr/X11/bin I will try your suggestion. I do need to keep MacPorts running, but reading your explanation it seems I can. macPorts did generate the files to make using the port command. – rhand Jun 10 '12 at 13:02
Only somehow the alias alias ruby='/opt/local/bin/ruby1.9' does not run Ruby 1.9 yet, but still grabs the old Ruby – rhand Jun 10 '12 at 13:39
When I also removed .profile I lost port and mate. Here is my current path echo $PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/X11/bin and path in .bashrc PATH=/opt/local/bin:opt/local/sbin:/opt/subversion/bin:/opt/local/apache2/bin/:‌​/opt/local/lib/python2.4/site-packages/django/bin:$PATH – rhand Jun 10 '12 at 13:48
@rhand See my update in the answer. – user13742 Jun 10 '12 at 14:37
Cool. All commands seem back. Only got one path warning concerning gems running: sudo gem install --user-install typhoeus Password: Fetching: typhoeus-0.4.2.gem (100%)m /opt/local/lib/ruby/site_ruby/1.8/rubygems/installer.rb:438: warning: Insecure world writable dir /usr/local in PATH, mode 040777 WARNING: You don't have /Users/jasper/.gem/ruby/1.8/bin in your PATH, gem executables will not run. Successfully installed typhoeus-0.4.2 1 gem installed Installing ri documentation for typhoeus-0.4.2... Installing RDoc documentation for typhoeus-0.4.2... – rhand Jun 10 '12 at 14:50

Bash reads ~/.bash_profile if it exists, and ~/.profile if it doesn't. Hence when you created ~/.bash_profile, your ~/.profile was no longer used. Your aliases aren't specific to bash as opposed to other shells, so you might as well put them in ~/.profile.

Also, you start an interactive login bash, bash reads ~/.bash_profile or ~/.profile (the bash-specific session startup script, or the generic shell session startup script if it doesn't exist), but not ~/.bashrc (the interactive bash startup script). So put these two lines in your ~/.bash_profile to load everything as it should be:

. ~/.profile
case $- in *i*) . ~/.bashrc;; esac
share|improve this answer

Well, maybe it's $PATH problem? Have you check it before & after?

share|improve this answer
Here is my PATH: $ echo $PATH /opt/local/bin:/opt/local/sbin:/opt/subversion/bin:/opt/local/bin:opt/local/sbin‌​:/opt/local/lib/python2.4/site-packages/django/bin:/usr/bin:/bin:/usr/sbin:/sbin:‌​/usr/local/bin:/opt/X11/bin:/usr/X11/bin Not sure if there is an issue there. You and @hesse do think there is so there must be. Still pretty green in this area. – rhand Jun 10 '12 at 13:01

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.