Firefox 3 + Ubuntu 8.04 = Huge fonts

For those of you seeing strange and unreasonably large font sizes in Firefox 3 on Ubuntu 8.04, try setting the “layout.css.dpi” (via about:config) to 72 or 96. Either of those values should set all fonts to a reasonable size.
This should have been fixed by now in the final version, but it might help someone who still suffer this problem.
Read more >>

Ubuntu Hardy Heron (8.04) on Thinkpad T61

I've been running Ubuntu 8.04 Beta for quite some time. Now that the final version is out I decided to make a clean sheet and install it over from scratch to remove all the quirks I added by testing.
My setup is the following:

Intel Centrino Pro (Core 2 Duo) T7300(2GHz)
Intel Graphics Media Accelerator X3100
Intel PRO/Wireless 4965AGN Mini-PCI Express Adapter
AD1984 HD Audio controller
4-in-1 Memory reader
2GB RAM DDR2
120GB 5400rpm HD
14.1" in 1440x900 LCD
CDRW/DVDR Multi-Burner

Yours might vary.

Read the full post here.

I installed Hardy with the Desktop CD. A few seconds to boot up from CD was a great start. Partioned using gparted, with dedicated swap, /boot, /home, and /
After some minutes of file copying it was ready to reboot, so I clicked restart but the screen blanked and hang there.
Hard reboot later and Ubuntu started up.
As usual, a quick look at the logs to see if there is something going on behind stage that I need to take care first.
First look: Compiz started by default. Wireless working. Ethernet Working. Video ok. Fonts are a little rugged. Sound working. Capture not working; known problem since internal mic is disabled by default.
Some warnings on xorg.log is the only thing found, particuarly a Bad V_BIOS checksum which I'll check later.
No packages to update. That's good :)
Since I work for IBM and I need some essential software for my day-to-day, I decided to go for the IBM Repositories first and install Lotus Notes, Sametime, and some other software.
First AT&T Global Network Client to connect to work. You can refer to my post for that: http://technobluez.blogspot.com/2008/02/at-global-network-client-for-ubuntu.html

Now let's get the right keys in:
$ wget http://yktgsa.ibm.com/projects/i/ibmubuntu/web/public/ibmubuntu.pub -O - 2> /dev/null | sudo apt-key add -

Since there is no Hardy IBM ubuntu yet:
$ wget -c http://pokgsa.ibm.com/projects/l/lud/utils/installer/lud-config-apt_0.4-1_all.deb
Unpack lud-config-apt and extract lud-gpg.asc and temperance-repositories.list
$ sudo apt-key add lud-gpg.asc
$ sudo cp temperance-repositories.list /etc/apt/sources.list.d/

$ wget -qO- http://olymp.hursley.ibm.com/dc4eb/olymp-repository.crt | sudo apt-key add -

(extracted from here: http://web.opensource.ibm.com/www/lud/ludinstall.html)
(and here https://ltc3.linux.ibm.com/wiki/LinuxDocs/Distro/Ubuntu)

Now let's run Synaptic to upgrade our sources and see if the package is the one we want. cool, working :)

Lotus Sametime 7.5

Install the packages sametime-blue.

# Tested on Edgy/Feisty/Kubuntu
sudo apt-get install sametime-blue
# To add support for sametime protocol for pidgin
sudo apt-get install pidgin libmeanwhile1

First problem, ibm-hannover refuses to install because libicu36 package is not found.
Let's use the Debian Client 4 ebusiness instead:

# dc4eb main olymp repository
deb http://olymp.hursley.ibm.com/dc4eb stable ibm main contrib non-free
#deb http://olymp.hursley.ibm.com/dc4eb testing ibm main contrib non-free #opti$
#deb http://olymp.hursley.ibm.com/dc4eb unstable ibm main contrib non-free #opt$

# source lines - you only need these if you want the sources to our packages
deb-src http://olymp.hursley.ibm.com/dc4eb stable ibm main contrib non-free #mi$
#deb-src http://olymp.hursley.ibm.com/dc4eb testing ibm main contrib non-free #$
#deb-src http://olymp.hursley.ibm.com/dc4eb unstable ibm main contrib non-free $

And on top of the temperance repos:

##
# lud-repositories.list
##
# DESC: Include LUD repositories in apt cache
##

deb http://pokgsa.ibm.com/projects/l/lud temperance stable

So after all this I did a:

$ sudo apt-get install ibm-notes8

Also to fix font problems:

$ sudo apt-get install t1-xfree86-nonfree ttf-xfree86-nonfree

New Lotus openwith

Opening attachments relies on having an old version of GNOME installed. For more recent versions of GNOME it can be made to work by removing/renaming the openwith program and replacing it with a symbolic link to /usr/bin/gnome-open. Note that you will have both /opt/IBM/notesplugin/bin/openwith and a symlink to it in your ~/notesplugin/bin/ . Simply changing the symlink to gnome-open doesn't appear to work, you need to delete (or rename) the actual program in /opt.

If you don't use GNOME then Anthony Moulen has written short script (WorkPlaceAttachmentScript) that can be used to replace the openwith program.

If you use KDE then there is also a script written by Jason Salcido that uses the file associations you already have in that environment.

Setup Printer in IBM

Install this package restart your Firefox and go to IBM Global Print web site to install the printer. http://w3-3.ibm.com/tools/print/index.html

# Tested on Dapper/Edgy/Feisty/Kubuntu
# Restart your Firefox, after install
sudo apt-get install lud-gpws

# for ubuntu 8.04 (Hardy) create a link in
sudo ln -s /usr/lib/firefox/plugins/ibmgpws.so /usr/lib/xulrunner-addons/plugins/ibmgpws.so

Multimedia Codecs, Java, Flash

Install this to be able to listen and view multimedia and sound files with different codecs and enable java and flash in firefox.

# Java browser plugins, java jre, flash, fonts, codecs
# The ubuntu-restricted-extras package installs the Sun JDK, which requires the user to accept the Sun License.
sudo apt-get install ubuntu-restricted-extras

Customizing your Firefox install

* If middle-click on tab to close it does not work, you can enable it by pointing Firefox to "about:config" and set middlemouse.contentLoadURL to false. Voila, middle-click to close works again.
* To enable the autoscroll (where you middle-click and a little arrow-graphic appears and you can scroll just by moving the mouse), go to "about:config" and set general.autoScroll to true.
* To automatically select the entire contents of the URL bar when you click there, open "about:config" and set browser.urlbar.clickSelectsAll to true. I find this a helpful usability improvement.

Speed Up Firefox web browser:

In your location bar, type about:config

In the filter bar type network.http.pipelining
Normally it says ” false ” under value field , Double click it so it becomes ” true “.

In the filter bar again and type network.http.pipelining.maxrequests
Default it says 4 under value field and you need to change it to 8

Go to the filter bar again and type network.http.proxy.pipelining
Normally it says ” false ” under value field , Double click it so it becomes ” true “.

Go to the filter bar again and type network.dns.disableIPv6
Normally it says ” false ” under value field , Double click it so it becomes ” true “.

Go to the filter bar again and type plugin.expose_full_path
Normally it says ” false ” under value field , Double click it so it becomes ” true “.

Now you need to Create new Preference name with interger value for this got to Right click -> New -> Integer
Here you need to type nglayout.initialpaint.delay and click ok
Now you need to enter 0 in value filed and click ok

Now you need to Create one more Preference name with interger value for this got to Right click -> New -> Integer
Here you need to type content.notify.backoffcount and click ok
Now you need to enter 5 in value filed and click ok

Now you need to Create one more Preference name with interger value for this got to Right click -> New -> Integer
Here you need to type ui.submenuDelay and click ok
Now you need to enter 0 in value filed and click ok

Some more Tweaks

Enable the spellchecker for inputfields and textareas (default is textareas only)
layout.spellcheckDefault=2


Ondemand CPU Frequency Governor

The Ondemand CPU Frequency Governor automatically adjusts the CPU frequency in order to save power. It does not simply set the frequency to the lowest setting, because even if you are saving energy, the longer the CPU is in use the more power it uses. So this adjusts the frequency to complete processes as quickly as possible, so it can return to a low power state for longer periods of time, reaching longer and lower sleep levels.

Make sure all package managers are closed, open a terminal and enter each of the following in order:
sudo modprobe acpi-cpufreq
sudo modprobe cpufreq_ondemand
sudo aptitude install sysfsutils
sudo -s
echo "devices/system/cpu/cpu0/cpufreq/scaling_governor=ondemand" >> /etc/sysfs.conf

For the first two, it is good if you do not see any response from the terminal. It only responds on errors. After this, close the terminal window and reboot your computer. After the reboot right-click on the panel where you want the CPU monitor, and select “add to panel” then add the CPU Frequency Monitor. . Then in a terminal enter:
sudo dpkg-reconfigure gnome-applets
select “ok” and “yes” and bam! Now each time you left-click on the CPU Frequency Monitor you can choose from the available frequencies, or the available automatic options. Remember, Ondemand is the best for battery life.

sources: http://forum.thinkpads.com/viewtopic.php?t=50949&postdays=0&postorder=asc&highlight=ubuntu&start=0
http://ubuntu.wordpress.com/2005/11/04/enabling-cpu-frequency-scaling/



Read more >>

Linux useful commands

Regular commands I use every day in Linux plus a few eclectic ones. Basically geared to the new user. Tips or thoughts, please let me know.

Man pages

In Linux there is a manual for just about anything. Learn about almost everything by “man command” in the terminal. (e.g. man ls). Or type “command –help” for a basic description. Also, many man pages also cover configuration files (man resolv.conf).

Basic Commands

  • Up key- Command History
  • Tab - Auto-completion, nice and handy for completing file-names, directory names, and commands.
  • Commands are in this form: command -arguments

Files ( + directories )

ls ( list ), -l ( long ), -a ( shows hidden )
cp ( copy )
mv ( move or rename ), mv filename1 filename2
rm ( remove ) Very dangerous to use as root. Use with caution. -r ( recursive ) -f ( force - needed to remove a link)

Wildcards to expand definitions:

  • * (matches any character), cp *.txt ~/Desktop
  • ? (matches any single character), cp file?.txt ~/Desktop
  • [characters] (Matches a range/set of characters), cp [a-n]*.txt ~/Desktop
  • >
  • [!characters] (Matches any character that is not a member of the set characters)

Directories

cd    ( change directory )
pwd ( print working directory )
mkdir ( mkdir )
  • A name followed by a / means it’s a directory, bash is pretty good about figuring out what you mean if don’t use it but some apps don’t. A safe syntax would be cd myfiles/

Command Output to Text (Standard Output)

ls /usr/bin > /home/user/Desktop/programs.txt

Add to an existing text file:

ls /sbin >> /home/user/Desktop/programs.txt

Pipes ( | )

  • Useful for using programs in conjunction with others
ls -l | less

Filters

Popular filters used after piping.

  • sort
  • uniq - removes duplicate lines of data
  • grep - returns the output of a specified pattern of characters
  • head, tail - outputs the first of last lines of output
  • tr - translates characters - can be used for upper/lower case conversion

Use grep to extract patterns from files

grep EE /etc/X11/xorg.conf

ls -all /dev | grep dvd

glxinfo | grep -i direct

Files and File Permissions

View file permissions

  • List the files in long view:
ls -l

-rwxr--r-- 1 user user 225444 2007-05-01 21:58 abc.pdf
| | | | | |
| | | world | group name
| | group owner name
| owner/user
directory?

r = read = 4
w = write = 2
x = executable = 1

Change File Permissions

owner = 4+2+1 = 7 , group = 4

The above file’s permissions numerically is 744 to change permissions of the above file:

chmod 755 abc.pdf

Change Ownership

chown user:group /home/user/document.txt

Lazy way of make a file executable ;)

chmod +x /usr/bin/gmailto

File Systems

Show all partitions and their types (may not work on all types)

sudo fdisk -l

Show partition used/available space:

df -h

See all file systems mounted:

cat /proc/mounts

Sort Directories by How much space they consume

du | sort -nr

Mount a Volume and add it in permanently:

  • The fstab file tells system of available disks/partitions and can automatically mount it at boot.
sudo mkdir /mnt/USB-Drive
sudo mount /dev/sda2 -t vfat -o rw /mnt/USB-Drive
  • types include hfsplus, vfat…

Enter in /etc/fstab:

/dev/sda2    /mnt/OSX          hfsplus ro,exec,auto,users    0      0
/dev/sda4 /mnt/Shared_Disk vfat users,auto,uid=1000,gid=100,umask=007 0 0
  • ro - read-only, rw - read-write, auto mounts filesystem on boot

Unmount all possible file systems:

umount -a

Check File Systems

  • Mounted file systems should be checked from the Installer CD/DVD or on boot.

Force file system check on next boot (won’t do it immediately):

sudo touch /forcefsck

Reboot immediately and check for errors:

sudo shutdown -Fr now

Change how often fsck runs at boot:

sudo tune2fs -c 30 /dev/hda

Check and mark bad blocks on damaged drives:

mke2fs -j -c /dev/hda3

Get UUID of devices:
At times the fstab file will require a device ID (UUID) be supplied.

ls /dev/disk/by-uuid -alh

Swap

Create swapfile

dd if=/dev/zero of=/swapfile bs=1024 count=2097152
  • Swap is recommended to be 1-1/2 to 2x the value of the RAM to use for hibernation.
  • 1 GB = 1024 MB = 1024 x 1024 kB = 1048576 kB = 1048576 kB x 1024 bytes/kB = 1,073,741,800 bytes10
mkswap /swapfile
swapon /swapfile

Add to /etc/fstab:

/swapfile              swap             swap     defaults

Controlling Swap

Turn off swap:
swapoff -a /swap

  • Swapiness is the input/output priority of swap. To measure the current value:
cat /proc/sys/vm/swappiness

To change the swap priority (higher value means more swapping):

sysctl vm.swappiness=10
  • values of 20 or lower are better for laptops.

File Compression

Pack:

tar gunzip:
tar cvpzf /AreaToSaveTo/yourcompressedfile.tgz –exclude=/this/folderorfile /CompressionStarts/Here
tar.bz2(tbz2) (block sorted, better compression):
tar -cvjf files.tar.bz2 fileorfolder
bzcat linux-2.6.XX.tar.bz2 | tar x

Unpack:

tar gunzip:
tar -xf file.tgz
tar xvjpf file.bz2 /startplace
tar.bz2(.tbz2):
bzcat file.tbz2 | tar file.tar

View contents of tar files:

tar tzvf name_of_file.tar.gz | less

unrar

unrar e file.part01.rar
  • Now works in conjunction with file roller.

Span Multiple Volumes

create:

tar -c -M --tape-length=2294900 --file=part1.tar too-large-archive.tgz

extract:

tar -x -M --file=part1.tar too-large-archive.tgz
  • At prompt specify new (n),
  • then specify volume name (e.g. n part2.tar)
  • tape-length is 1024 bytes measurement
    • or (1 computer kilo)

Or use “split” to break a large volume:split -b 2m largefile LF_

  • 2m = 2 megabytes LF is the prefix for new name
tar -cvj /full/path/to/mybigfile | split -b 650m

Put back together:

cat file* > newfile

Backup and Restore

Tar - From Install CD

cd /mnt/gentoo
tar -czpvf /mnt/gentoo/MacBook-Gentoo-Backup.tgz *

Rsync - Full Backup

rsync -avtp --delete --exclude=/home/user/somedir /source/dir /destination/dir
  • -a archive, -v verbose
  • -t preserve modification times, -p permissions
  • –delete removes destination file if has been removed from source
  • –links recreate symlinks
  • -z compress from source to destination - good for slow connections.
  • use “-a e ssh source name@hostname:dest” for ssh

Rsync - Incremental Backup
NEEDED? I think the above does Incremental too.rsync -b –backup-dir= combination

  • used for daily or every other day

Users

Add user

useradd -m -G adm,audio,cdrom,cdrw,cron,games,plugdev,portage,shutdown,usb,users,video,wheel -s /bin/bash user
  • Groups may vary some per distribution, this one is for Gentoo.
  • Some groups may not be available until installation is finished

Add/delete user to group

gpasswd -a user plugdev
gpasswd -d user plugdev

See what groups user belongs to

id

Remove user

userdel username

CD / DVD

Writing to CD/DVD with Rock-Ridge support

  • Rock-ridge support add Unix file extensions and attributes for iso9660 standard disks.
  • DVD are marked as 4.7GB capacity but thats just the marketing measure. In terms the computer understand the space on a DVD is 4.368 GB’s
  • 1 GB = 1048576 kB x 1024 bytes/kB
  • DVD +R at 4x or 8x for best performance

DVD

growisofs -Z /dev/dvd -lrJ -joliet-long /path/to/files
  • -Z means to start at the beginning of the dvd
  • -l allows long filenames (breaks DOS compatability)
  • -r Rock-ridge support
  • -J Add Joiliet support
  • -joliet-long - allows Joliet filenames to be 103 characters long instead of 64 - breaks joliet compatibility but works in most cases.

CD

mkisofs -o my.iso -lrJ /path/to/files
  • Then burn iso to CD.
  • Not sure if I can write directly to CD, from what I’ve seen it would seem that I can’t.

Blanking a Disk

  • If you want to blank a disk or it already has a file-system on it you’ll see an error like “WARNING: /dev/hda already carries isofs!” then reinitialize the filesystem:

DVD

dvd+rw-format -f /dev/dvd
growisofs -Z /dev/hda=/dev/zero

CD

cdrecord -v dev=/dev/hda blank=fast
cdrecord -v dev=/dev/hda speed=2 blank=fast
cdrecord -vv dev=1,0 blank=all

ISO

Write ISO to CD/Drive:

dd if=name.iso of=/dev/sdb1

Mount ISO:

mount -t iso9660 -o loop,ro name.iso /mnt/cdrom/
mount /path/to/name.iso /mnt/cdrom -t iso9660 -o ro,loop=/dev/loop0

Create an ISO from a DVD or CD:

dd if=/dev/hda of=name.iso

Create and ISO from a file/directory:

mkisofs -o name.iso /path/to/file_or_directory

CDRWin (.bin/.cue) images to .iso:

bchunk name.bin name.cue name.iso
bin2iso name.cue

Converting CloneCD images to ISO:

ccd2iso name.img name.iso

Converting nrg (Nero) images to ISO:

nrg2iso name.nrg name.iso

Support for writting large file sizes

  • ISO has file size limit of 4GB
  • untested - udf support is still in alpha
mkisofs -o my.iso -lrJ -allow-limited-size -udf file-or-pathtofiles
growisofo -Z /dev/dvd -lrJ -allow-limited-size -udf file-or-pathtofiles

Mouse/Keyboard

Change keymaps:

setxkbmap dvorak

Map pointer buttons to keyboard:

xmodmap -e 'keycode 116 = Pointer_Button2'
xmodmap -e 'keycode 108 = Pointer_Button3'
xkbset exp m

Hardware Info

Kernel messages about hardware

dmesg | less

Cpu info:

cat /proc/cpuinfo

List all PCI devices

lspci

Detect hardware as it’s plugged in

tail -f /var/log/messages

For more detail

lshal --monitor

Icons / Cursors / Fonts …

Reset Icon Cache

gtk-update-icon-cache -f /usr/share/icons/hicolor/

Convert Windows Icons to Linux

Reset cache for fonts:

fc-cache -vf

Build font info per directory:

mkfontscale
mkfontdir

Replace fonts script

cd /etc/fonts/conf.d/ && ln -sf ../conf.avail/61-replace-corefonts.

Take screenshot of selected area

import filename.png

Set gamma

  • If you have ability to calibrate your own icc profile ( Macintosh’s do ) copy the icc profile to Linux and use “xcalib icc.profile”, otherwise a basic gamma can be set:
xgamma -bgamma 0.925 -ggamma 0.925 -rgamma 0.925

System

Shutdown at a specific time

shutdown -h 22:33

Manually Shutdown

shutdown -P now

date
use “date” to check date and to set system clock:

date MonthDayHourMinuteYear

Find out kernel version:

uname -r

Start Program that isn’t in the Systems Path

  • Only programs that are in a system’s PATH setting can be started by typing the command
./program

Disable Touchpad whilest Typing

syndaemon -d -t -i 2

Networking

Samba

Change or add password to smbconf:

sudo smbpasswd -L -a user

Mount SMB share to folder

sudo smbmount //192.168.1.105/user/ mnt/directory -o username=username,password=pass,uid=1000,mask=000

Mount all Samba Shares in fstab

mount -a -t smbfs

SSH / SCP

Remote login with ssh with username (diiferent that the one you’re using)

ssh -l username 192.168.1.101

Copy remote file to local file

scp -p user@192.168.1.101:~/Desktop/file.name file.name

Download entire website:

wget -r http://www.robot-frog.com/

Advanced

Bash

The ~/.bashrc file

  • Adding PATHs to the ~/.bashrc file will make the system aware of another folder that has executables.
  • Shortcuts can be created for common commands
export PATH=$PATH:/home/user/.scripts
alias capscreen="import ~/Desktop/screen.png"

Analyze Bash History

cat .bash_history | tr '|' '\n' | awk '{print $1}' | \
egrep -o '([^/]+)$’ | sort | uniq -c | sort -nr | awk ‘{print $2 “,” $1}’

To see the preset variables already defined for bash:

set

Search History

ctrl-r

Cron

  • Cron is the system timer. It checks every minute for commands to run.

To edit a crontab (cron jobs)

crontab -e

# minute (0-59),
# | hour (0-23),
# | | day of the month (1-31),
# | | | month of the year (1-12),
# | | | | day of the week (0-6 with 0=Sunday).
# | | | | | user
# | | | | | | commands
43  08  *   *   *       env DISPLAY=:0.0 audacious [[/home/user]] /My\ Music/Other/Alarms/301gq.mp3

chroot - (changing root)

  • Userful for logging into your current Linux from an installtion CD
su
mkdir /mnt/osname
mount /dev/sda3 /mnt/osname
mount -t proc none /mnt/osname/proc
mount -o bind /dev /mnt/osname/dev
chroot /mnt/osname /bin/bash

Compile Kernel

make oldconfig
make menuconfig
make clean zImage modules modules_install install

For PPC “make pmac32_defconfig” will generate a basic config.

Find Modules

find /lib/modules/2.6.20-gentoo-r2-ibook-SE-g3 -type f -iname ‘*.o’ -or -iname ‘*.ko’

Add the screen program to be able to background a terminal process
screen command

  • CTRL + A + D to background it, to return it:screen -r

Use noup to continue a process even if you log out
noup command

Unsorted / Less Used

sudo echo >> no work

echo "my text" | tee /etc/portage/package.use

See whats taking up ram:

ps auxf --sort size

Generate Modelines for xorg.conf

gtf screenwidth screenheight vertrefresh

Reset settings in gconf:

gconftool-2 --recursive-unset /apps/compiz 

GDM conf file

Touch Entire System
(careful I’ve done this before when my files got dated wrong from a dead battery. But I tried again and the files are put where the command is executed - all 0 bytes)

find /| xargs touch - m

Allow window executables to run directly (will need Wine and misc. binaries enabled in kernel)
In /etc/sysctl.conf add

fs.binfmt_misc.register = :WINEXE:M::MZ::/usr/bin/cedega:

and add to fstab

none  /proc/sys/fs/binfmt_misc  binfmt_misc  defaults 0 0

Re-size Images

  • requires imagemagick
convert writes new image, mogrify overwritesconvert image.jpg --resize 800x600 newresized.pngmogrify -geometry 1024x768 *.png

Copy ALL Files (+invisible, hard links, softlinks)

find . -depth -print0 | cpio –null –sparse -pvd /mnt/newhome/

Create random numbers, hex letters

dd if=/dev/random bs=1 count=5 2>/dev/null | xxd -ps

Run programs sequentially or concurrently

program && program
program & program

Hardware acceleration enabled?

glxinfo | grep rendering

A simple web server

Share files in directory and all subfolders:

python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"

View in:

http://localhost:8000 or http://your_ip:8000/

Debian Specific:

Run Program as normal user:

sudo dpkg-statoverride --update --add root root 4755 /usr/share/app

drive space show taken by installed packages

dpkg-query -W --showformat='${Installed-Size;10}\t${Package}\n' | sort -k1,1n

Rebuild Font Directory

dpkg-reconfigure fontconfig
Read more >>

How to get special keys to work in ubuntu and Firefox 3.0

Thankfully the people at Mozilla decided to include the expected functionality for the XF86Back and XF86Forward keysyms in the new release so all you need to do is:
# printf 'keycode 234 = XF86Back\nkeycode 233 = XF86Forward' >> /etc/X11/Xmodmap
And to make this take effect immediately (i.e., without having to log out and log in again), as a regular user run:
$ Xmodmap /etc/X11/Xmodmap
For Hardy Heron, the xmodmap command is all lowercase. Also, the /etc/X11/Xmodmap file is not being read on boot. I've added the command to my .bashrc to have it called on startup.

For more information go to the original link.
Read more >>