48

I'm a web developer. When I want to start working, always i'm executing some command on terminal. For example:

sudo service apache2 start
sudo service mysql start
sublime

For speed up this process, I create a .sh file which contain these commands.

Now, when I want to start working, I'm just executing this .sh file and all services (mysql, apache2 etc.) starting.

Is it possible to create a custom command for this? For example if I type sudo start-working to terminal, it will execute these commands

2 Answers 2

72

A common way people handle this is to make a bin directory in their home directory: mkdir ~/bin

Then, you can put your custom scripts in there: mv start-working ~/bin

Make sure your script is executable: chmod +x ~/bin/start-working

Add this to the bottom of your ~/.bashrc file (if you're using bash, which you probably are): export PATH=$PATH:~/bin

Now log back in and out of your terminal and you should be able to simply type start-working, and your script will execute.

Now that your path is setup, any new scripts you drop into your ~/bin you can just type in the name of.

7
  • 16
    +1, and instead of logging out and in, you can simply run the source ~/.bashrc or . ~/.bashrc commands to apply the changes.
    – B Faley
    Commented Sep 2, 2012 at 7:35
  • Joe Oppegaard, I find this really useful information as there are completed scripts I have and would like run as a command rather than a script. Is there a way to include all subdirectories that you create in ~/bin so that you don't have to include multiple export lines in .bashrc? I tried export PATH=$PATH:~/bin/* but that didn't return the desired results. Commented Jan 10, 2013 at 15:09
  • 2
    The default ~/.profile already adds ~/bin to PATH, so appending it in ~/.bashrc in addition will pointlessly add it twice or more.
    – geirha
    Commented May 16, 2013 at 19:53
  • It worked without me appending anything to .bashrc, so you may be able to skip that as geriha says Commented Mar 6, 2015 at 23:56
  • in my experience, when you add new file you have to redo a chmod command, otherwise the permission will be denied
    – DiaJos
    Commented Feb 28, 2019 at 12:47
22

I was looking how to create custom commands and I found this question among others. I think what I was looking for was for aliases so I'll give you the way to do this with an alias.

On your home folder:

nano .bash_aliases

And there you can write down your commands in one line:

alias start-working='sudo service apache2 start; sudo service mysql start; sublime'

After saving the file reconfigure your bashrc

. ~/.bashrc

And check your new alias is loaded

alias

That's it, you can start working now by running

start-working
0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .