# Sourcing

# Sourcing a file

Sourcing a file is different from execution, in that all commands are evaluated within the context of the current bash session - this means that any variables, function, or aliases defined will persist throughout your session.

Create the file you wish to source sourceme.sh

#!/bin/bash

export A="hello_world"
alias sayHi="echo Hi"
sayHello() {
    echo Hello
}

From your session, source the file

$ source sourceme.sh

From hencefourth, you have all the resources of the sourced file available

$ echo $A
hello_world

$ sayHi
Hi

$ sayHello
Hello

Note that the command . is synonymous to source, such that you can simply use

$ . sourceme.sh

# Sourcing a virtual environment

When developing several applications on one machine, it becomes useful to separate out dependencies into virtual environments.

With the use of virtualenv (opens new window), these environments are sourced into your shell so that when you run a command, it comes from that virtual environment.

This is most commonly installed using pip.

pip install https://github.com/pypa/virtualenv/tarball/15.0.2

Create a new environment

virtualenv --python=python3.5 my_env

Activate the environment

source my_env/bin/activate