0
0
Bash-scriptingHow-ToBeginner · 3 min read

How to Use chmod for Script in Bash: Simple Guide

Use chmod +x script.sh to make your bash script executable. This command adds execute permission so you can run the script directly with ./script.sh.
📐

Syntax

The basic syntax of chmod to make a script executable is:

  • chmod +x filename: Adds execute permission to the file for the user, group, and others.
  • filename: The name of your script file, e.g., script.sh.

This allows you to run the script directly without typing bash before it.

bash
chmod +x script.sh
💻

Example

This example shows how to create a simple bash script, make it executable with chmod, and run it.

bash
# Create a script file
 echo -e '#!/bin/bash\necho "Hello, world!"' > hello.sh

# Make the script executable
chmod +x hello.sh

# Run the script
./hello.sh
Output
Hello, world!
⚠️

Common Pitfalls

Common mistakes when using chmod for scripts include:

  • Not adding execute permission, so the script cannot run directly.
  • Trying to run the script without ./ prefix if the current directory is not in PATH.
  • Using incorrect permissions like chmod 777 which is insecure.

Always use chmod +x to add execute permission safely.

bash
## Wrong way (script not executable)
# ./myscript.sh
# bash: ./myscript.sh: Permission denied

## Right way
chmod +x myscript.sh
./myscript.sh
📊

Quick Reference

CommandDescription
chmod +x script.shAdd execute permission to script.sh for all users
chmod u+x script.shAdd execute permission to script.sh for the file owner only
chmod -x script.shRemove execute permission from script.sh
./script.shRun the script if it has execute permission
bash script.shRun the script without needing execute permission

Key Takeaways

Use chmod +x filename to make your bash script executable.
Run executable scripts with ./filename from the terminal.
Without execute permission, you must run scripts with bash filename.
Avoid using overly permissive permissions like chmod 777.
Always check script permissions if you get 'Permission denied' errors.