From a different Linux

This page discusses practical differences between Ubuntu and other Linux distributions. See also the all-systems switching guide. If you are switching from Mac OS X, see switching from OS X.

Ubuntu is based on Debian, so many tasks are the same in Ubuntu as they are in Debian.

Installing Software

Like all Debian-based distributions, software is installed in Ubuntu with APT. This is similar to yum, which is used by RedHat-based distributions. If you prefer the command-line, you should install packages with apt-get. Alternatively, System > Administration > Synaptic Package Manager is a graphical interface to APT.

See Installing Software for information on installing packages.

Performing Administrative Tasks

In Ubuntu, you are recommended to run programs with sudo instead of logging in as root with su. Advantages of sudo include:

  • You can't do anything really bad to your system unless you use sudo each time.

  • You don't have to remember a root password - sudo only needs your own account's password.

  • sudo remembers for a limited time that you used your password, so you won't have to enter your password every time you use it.

At first, only the user you create during installation will have access to sudo. To allow additional users to use sudo, add them to the admin group.

Using Sudo

To run a command with root privileges, simply open a terminal and type:

sudo <command>

Replace <command> with the command you wish to use. Sudo will ask for your normal user password; enter it and press return to run the command.

Graphical equivalents to sudo include gksudo and kdesudo. When one of these programs runs, a dialog box will appear asking you to enter your normal user password. Enter your user password and click Continue or press the enter button on your keyboard.

To run a proper root shell you can do the following:

sudo -i

This will ask for your normal user password, enter it and you will be at the root prompt.

Command Line configuration (aliases and inputrc)

This section is written for Mandrake/Mandriva users, but probably applies generally.

Useful Shell aliases

Mandriva defines the following aliases in /etc/profile.d/, which make the shell faster to use. They could also go in your ~/.bashrc:

alias ls='ls -F --color=auto'

# make ls coloured, and append characters to denote filetype ( eg trailing / on directory names)

alias l='ls'

# short for ls

alias l.='ls -d .*'

# show only hidden files

alias la='ls -a'

# list all files

alias ll='ls -l'

# long format listing

alias lsd='ls -d */'

# list only directories

alias lx='ls -X'

# list, order by extension

alias p='cd -'

# previous directory

alias s='cd ..'

# short for cd ..

alias cd..='cd ..'

# allow omission of space in cd ..

alias rd='rmdir'

# Remove a directory

alias md='mkdir'

# Make a directory

The following make cp, rm, and mv interactive by default, so you don't overwrite a file by mistake. Most people think this is useful, but some think it makes one careless, as one might come to rely upon the implicit -i, on some other system which doesn't have it.

alias mv='mv -i'

alias rm='rm -i'

alias cp='cp -i'

Note that these aliases do not work when running a command as root using sudo. One workaround for this is to add alias sudo="sudo " to your .bashrc (note the extra space in the quotes). This will allow the first word after 'sudo' to be substituted if an alias exists.1

Tab Completion Enhancements

Mandriva defines the following in /etc/inputrc, which prints the list of options and then repeats the prompt where you were:

set show-all-if-ambiguous on

Putting this in /etc/inputrc or ~/.inputrc will add this function to Ubuntu.

Music, Movies, DVD Playback and Java

Getting file formats restricted by patents or copyright such as movies and music to play on your Ubuntu system is simple (although not as simple as it could be). See RestrictedFormats. Java is simple too.

Services, Chkconfig and Initscripts

Users of Red Hat and Mandriva will be used to configuring which services run by using chkconfig command. chkconfig is not available in Ubuntu, but you can install sysv-rc-conf instead.

To start and stop services, it's necessary to invoke the init.d script directly: /etc/init.d/ssh start rather than service sshd start. If you want to have the 'service' syntax back, add this to root's .bashrc:

function service (){ /etc/init.d/$@ ;}  

Since Intrepid, you can also install the following package: sysvinit-utils, which provides the service command.

Ubuntu runs in runlevel 3 by default, whereas RedHat and Mandriva use runlevel 5 for graphics, and 3 for console. Ubuntu also has an extra rcX.d directory, /etc/rcS.d, which runs at boot-up. Packages like udev are started from rcS.d. There are some helpful README files in the /etc/rcX.d directories.

Environment Variables

See Environment Variables for a full guide to the use of environment variables in Ubuntu.

Moving to Ubuntu from openSUSE

This section documents a few surprises that long-term openSUSE users may encounter when moving to Ubuntu. It was inspired by a recent transition from openSUSE 11.2 to Ubuntu 10.10.

Shell Scripts

Some of your tried and tested shell scripts may break in a surprising manner if the first line is #!/bin/sh and you have used features specific to the bash shell. It is tempting to change the first line to #!/bin/bash to get things working, but you may not have realised that that Ubuntu uses the dash shell as the default shell. Should you wish to do things in the Ubuntu way, consider searching the web using the keyword bashisms to understand the differences, and fixing your scripts accordingly.

Editing Using vi

Experienced users, even those who normally use emacs or xemacs, find themselves using vi to configure things to suit their way of working during the first hour or two of a fresh installation. Ubuntu has a mechanism to choose a preferred editor, but it is frustrating during the first hours when all you want is a working version of vi that doesn't dump escape codes over your file when you use the arrow keys in insert mode, and when nano just looks weird.

The following code snippet, added to your .bashrc, should ease the transition until you figure out how Ubuntu does things.

# Voodoo for sudo.
alias rm='/bin/rm -i'
alias vi='/usr/bin/vim.tiny'
alias sudo='sudo '
alias visudo='EDITOR=/usr/bin/vim.tiny /usr/sbin/visudo'

Using sudo

Ubuntu is keen to encourage good practice regarding the preferred use of sudo. As always, it is dangerous to edit /etc/sudoers, even when using sudo visudo. Ubuntu would like you to make your changes in separate files inside the /etc/sudoers.d directory. This is fine, but it does not work out-of-the-box on Ubuntu 10.10 should you wish to use NOPASSWD. This is because the #includedir /etc/sudoers.d directive is found on the last-line-but-one of /etc/sudoers by default; moving it to the end makes NOPASSWD work as one expects.


There are a few good resources you can turn to if you need further help with Ubuntu, these include:

Last updated