You can make your life a bit easier by defining Unix shell aliases and environment variables and functions for Django paths and commands. They can be set e.g. in {{{$HOME/.bash_aliases}}} to be loaded automatically. If you have installed Django in your site-packages, you could use something like: {{{ DJ=/usr/lib/python2.4/site-packages/django DJBIN=$DJ/bin alias djadmin='$DJBIN/django-admin.py' djgrep() { grep -r --include="*.py" --include="*.html" $* $DJ } }}} Then you'll be able to: {{{ $ djadmin startproject myproject $ $DJBIN/make-messages.py $ less $DJ/docs/overview.txt $ djgrep Permissions /usr/lib/python2.4/site-packages/django/contrib/auth/models.py:77: (_('Permissions'), {'fields': ('is_staff', 'is_active', 'is_superuser', 'user_permissions')}), }}} Here's another example for those who don't keep their Django tree in {{{PYTHONPATH}}} (e.g. because of using many different Django versions). In this case the trunk branch is located in the user's home directory. {{{ DJP=/home/akaihola/django-trunk # DJP stands for DJango Pythonpath DJ=$DJP/django DJBIN=$DJ/bin alias djadmin='PYTHONPATH=$DJP $DJBIN/django-admin.py' djgrep() { grep -r --include="*.py" --include="*.html" $* $DJ } }}} And some useful mantras using these shortcuts: {{{ $ svn up $DJP $ djadmin startproject myproject $ $DJBIN/make-messages.py $ PYTHONPATH=$DJP ipython In [1]:import django In [2]:django.__file__ Out[2]:'/home/akaihola/django-trunk/django/__init__.pyc' }}}