I have a script.sh file and type of this file is shellscript file. I want to make this file as application/x-executable file. How can I make it?
I have a script.sh file and type of this file is shellscript file. I want to make this file as application/x-executable file. How can I make it?
You can mark the file as executable:
You can then execute it like this:
If you want to use a different command to start it, you can add an alias:
Add this at the end of the file:
Open a new terminal session or type
source ~/.bashrc
in your terminal to apply. Then simply use the new name to start the script.There are two ways of making a file executable:
GUI Method:
Right-click the file and select Properties. Go to the permissions tab, then tick the box
Execute: [ ] Allow executing file as program
or in NautilusProgram: [ ] Allow this file to run as a program
in Thunar.Terminal / Command method:
You can either use:
cd /to/my/required/directory
Then run
chmod +x filename.extension
Or just run:
chmod +x /path/to/your/filename.extension
chmod
does also have some more advanced options:The spaces are to show that it is split up:
- rwx --- ---
The first set of
---
is User. The second is Group and the last is Other (anyone else)r stands for Read, w for Write and x for eXecute.
So to allow everyone to read it, but only Group to execute and User to read and write it (but for some reason not execute) would be:
-rw- rx- r--
But this would be added to the command as:chmod +rw-rx-r-- /path/to/file.extension
chmod
also can do this in numbers. It is based on binary (I think, as it is 1,2 and 4)So there are these numbers:
Execute by user is
100
. Execute by group is010
. Execute by other is001
.Write by user is
200
. Write by group is020
. Write by other is002
.Read by user is
400
. Read by group is040
. Read by other is004
.Then you add these together to get the desired combination.
So to allow everyone to read it, but only Group to execute and User to write it (but for some reason not execute) would be:
400 + 040 + 004
and010
and200
That adds up to 600 + 050 + 004 = 654.
You could then run the command.
chmod +654 /path/to/file.extension
to set it.And to set all permissions you can type:
chmod +rwxrwxrwx /path/to/file.extension
Or (this is a bit easier to write, but harder to remember each one):
chmod +777 /path/to/file.extension
Finally, you can do:
chmod -777 /path/to/file.extension
To take all permissions away from everyone.
And:
chmod +300 /path/to/file.extension
To add read and write for user, without affecting any other permissions (e.g. Execute permissions).
This website has a very useful little grid checkbox thing, whereby you can tick the options you want and it gives you the command:
However, not all the possible combinations are sensible to use; the main ones that are used are the following:
755 -
Owner
has all, andGroup
andOther
can read and execute700 -
Owner
has all644 -
Owner
can read and write, andGroup
andOther
can read600 -
Owner
can read and writeAnd, if you're using non-trivial user groups:
775 -
Owner
can read and write, andGroup
andOther
can read770 -
Owner
andGroup
have all, andOther
can read and execute750 -
Owner
has all, andGroup
can read and execute664 -
Owner
andGroup
can read and write, andOther
can just read660 -
Owner
andGroup
can read and write640 -
Owner
can read and write, andGroup
can read777 and 666 are rarely used, except in /tmp.
Thanks Ilmari Karonen for pointing out the ones in common usage!
Run:
To make it un-executable, run:
For example i created
.sh
file:After i write some code on vi editor, i'll exit from vi editor:
Let all users run your script
As stated you can set the execution bit of the file to make it executable with
chmod +x
. But you can also usechmod a+x
:NOTES:
.sh
it can end in.txt
as shown here, or have no extension whatsoever.+x
(only you can execute the script), usea+x
so all users can execute the script.*
appended to it to indicate it is executable. Also the file name changes color to green on most systems.Run a script without making it executable
You can still run a bash script without making it executable. For example:
NOTES:
echo Hello World
.file_command.txt
is correct.bash
and passing it the script name. Thebash
command is actually store as/bin/bash
and it is an executable on all Ubuntu systems.#!/bin/bash
as the first line in a script.chmod +x
orchmod a+x
.