Wed, 30 Apr 2025 13:08:28 +0000
There are multiple very useful built-ins in Bash other than cd, ls, and echo. For shell scripting and terminal command execution, there is one lesser known but very powerful built-in command. It is the ” shopt”. This comes in handy when you are customizing your shell behaviour or writing advanced scripts. If you understand shopt, you can improve your workflow and also your scripts’ reliability.
In this guide, let us explain everything there is about the shopt command, how to use it, and some practical applications as well (as usual in Unixmen). Ready? Get. Set. Learn!
The Basics: What is shopt
shopt stands for Shell Options. It is a built-in command in Bash, that allows you to view and modify the behaviour of the shell by enabling or disabling certain options. These options affect things like filename expansion, command history behaviour, script execution, and more.
Unlike environment variables, options in shopt are either on or off i.e., boolean.
Basic Syntax of shopt
Here is the basic syntax of shopt command:
shopt [options] [optname...]
Executing
- Without arguments: Lists all shell options and their current status (on or off).
- With “-s” (set): Turns on the specified option.
- With “-u” (unset): Turns off the specified option.
- Use “-q” (quiet): Suppresses output, useful in scripts for conditional checks.
How to View All Available Shell Options
To view the list of all shopt options and to see which are enabled, execute this command:
shopt
The output to this command will list the options and their status like:
autocd on cdable_vars off dotglob off extglob on
Enabling and Disabling Options with shopt
We just learnt how to see if an option is enabled or not. Now let us learn how to enable an option:
shopt -s optname
Similarly, execute this command to disable an option:
shopt -u optname
Here is a couple of examples:
shopt -s dotglob # This command is to include dotfiles in pathname expansion shopt -u dotglob # This command is to exclude dotfiles (which is the default behaviour)
Some of the Commonly Used shopt Options
Here are some shopt options that will be useful for you:
dotglob
When this option is enabled, shell includes dotfiles in globbing patterns i.e., the * operator will match “.bashrc”. This option will be helpful for you when you want to apply operations to hidden files.
shopt -s dotglob
autocd
The autocd option lets you cd into a directory without typing the cd command explicitly. For example, typing “Documents” will change into the “Documents” directory. Here is how you can enable it:
shopt -s autocd
nocaseglob
This option makes filename matching case insensitive. Using this option will help you when you write scripts that deal with unpredictable casing in filenames.
shopt -s nocaseglob
How to Write Scripts with shopt
You can use shopt within Bash scripts to ensure consistent behaviour, especially for scripts that involve operations like pattern matching and history control. Here is an example script snippet to get you started:
# First let us enable dotglob to include dotfiles shopt -s dotglob for file in *; do echo "Processing $file" done
In this script, “dotglob” option ensures hidden files are also processed by the “for” loop.
Resetting All shopt Options
If you’ve made changes and want to restore to the default behaviours, you can unset the options you enabled by executing these commands for the appropriate options:
shopt -u dotglob shopt -u autocd shopt -u extglob
Advantages of shopt
It gives you fine-grained control over your shell environment. Once you are familiar with it, it improves script portability and reliability. With shopt, you can enable advanced pattern matching and globbing. It can be toggled temporarily and reset as needed and also helps you avoid unexpected behaviours when writing automation scripts.
Wrapping Up
The shopt command is not as famous as other built-in tools in shell but it a very powerful hidden gem. Whether you are starting to explore shell scripting or you are a power user automating workflows, learning to use shopt can save time and prevent headaches. Once you’re comfortable, you’ll find that Bash scripting becomes more predictable and powerful.
Related Articles
- Bash Functions in Shell Scripts
- How to Run a Python Script: A Beginners Guide
- Bash Script Example: Guide for Beginners
- bash – shopt works in command line, not found when run in a script – Ask Ubuntu
The post shopt in Bash: How to Improve Script Reliability appeared first on Unixmen.
Recommended Comments