You got your script all written and want to try it out, but when you go to run the script you get an error message:
$ ./my.script bash: ./my.script: Permission denied $
You have two choices. First, you could invoke bash and give it the name of the script as a parameter:
$ bash my.script
Or second (and better still), you could set the execute permission on the script so that you can run it directly:
$ chmod a+x my.script $ ./my.script
Either method will get the script running. You’ll probably want to set the execute permissions on the script if you intend to use it over and over. You only have to set the permissions once, thereafter allowing you to invoke it directly. With the permissions set it feels more like a command, since you don’t have to explicitly invoke bash (of course behind the scenes bash is still being invoked, but you don’t have to type it).
In setting the execute permissions, we used a+x
to give execute permissions to all.
There’s little reason to restrict execute permissions on the file unless
it is in some directory where others might accidentally encounter your
executable (e.g., if as a system admin you were putting something of
your own in /usr/bin
). Besides, if
the file has read permissions for all then others can still execute the
script if they use our first form of invocation, with the explicit
reference to bash. Common permissions on shell
scripts are 0700
for the
suspicious/careful folk (giving read/write/execute permission to only
the owner) and 0755
for the more
open/carefree folk (giving read and execute permissions to all
others).
3.149.214.32