Terminal: Where is the shell start-up file?
Asked Answered
R

4

39

I'm following a tutorial called Starting a Django 1.4 Project the Right Way, which gives directions on how to use virtualenv and virtualenvwrapper, among other things.

There's a section that reads:

If you're using pip to install packages (and I can't see why you wouldn't), you can get both virtualenv and virtualenvwrapper by simply installing the latter.

   $ pip install virtualenvwrapper

After it's installed, add the following lines to your shell's start-up file (.zshrc, .bashrc, .profile, etc).

   export WORKON_HOME=$HOME/.virtualenvs
   export PROJECT_HOME=$HOME/directory-you-do-development-in
   source /usr/local/bin/virtualenvwrapper.sh

Reload your start up file (e.g. source .zshrc) and you're ready to go.

I am running Mac OSX, and don't know my way around the Terminal too well. What exactly does the author mean by shell's start-up file (.zshrc, .bashrc, .profile, etc)? Where do I find this file, so that I can add those three lines?

Also, what does he mean by reload your start up file (e.g. source .zshrc)?

I would appreciate a detailed response, specific to OSX.

Regular answered 26/2, 2013 at 23:35 Comment(0)
C
48

You're probably using bash so just add these 3 lines to ~/.bash_profile:

$ cat >> ~/.bash_profile
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/directory-you-do-development-in
source /usr/local/bin/virtualenvwrapper.sh
^D

where ^D means you type Control+D (EOF).

Then either close your terminal window and open a new one, or you can "reload" your .bash_profile like this:

$ source ~/.bash_profile
Crustal answered 26/2, 2013 at 23:40 Comment(6)
A slight quibble: .profile can be read by many different shells, some of which may not recognize source as a more-readable synonym for .. Use . /usr/local/bin/virtualenwrapper.sh instead for the third line. Or, put those three lines in .bash_profile instead.Pricecutting
And if .bash_profile already exists, .profile is not read at all.Gillis
Thanks for the comments - I've updated the answer to explicitly use .bash_profile rather than .profile.Crustal
I'm runing windows 7 and I have cmd.exe So where I add these lines?Epoxy
@UFM: you should probably install cygwin so that you can use a bash shell on Windows.Crustal
I tried this after pip install virtualenvwrapper but I have this error when I reload the .bash_profile : /usr/local/bin/virtualenvwrapper.sh: No such file or directory.Dryer
G
7

If you use bash, it usually means ~/.bash_profile.

In Terminal and iTerm new shells are login shells by default, so ~/.bashrc is not read at all. If instructions written for some other platform tell you to add something to .bashrc, you often have to add it to .bash_profile instead.

If both ~/.profile and ~/.bash_profile exist, only .bash_profile is read. .profile is also read by other shells, but many of the things you'd add to .bash_profile wouldn't work with them.

From /usr/share/doc/bash/bash.html:

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands 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.

[...]

When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.

Gillis answered 27/2, 2013 at 5:16 Comment(0)
L
2

I have Anaconda install, so I add these 3 lines to ~/.bash_profile

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Documents/Python
source /Users/Username/anaconda3/bin/virtualenvwrapper.sh 

and then reload profile by:

$ source ~/.bash_profile
Loricate answered 16/1, 2018 at 20:6 Comment(0)
M
0

I use an approach that I think is easy to maintain. It also works well if you sometimes use Ubuntu systems, however I will be sure to address the OP's OSX requirement in my answer.

  1. Create a .aliases file with your alias(es) in your home directory, e.g. ~/.aliases

  2. Execute this file from your .bashrc file (this is executed each time for a new shell process) with source ~/.aliases. This is all you would actually need to do for Ubuntu btw.

  3. On OSX call .bashrc from your ~/.profile file, i.e. have ~/.bash_profile contain: source ~/.bashrc

Missymist answered 6/10, 2016 at 0:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.