Special parameters are the second parameter type and are managed by the shell itself and are presented as read-only. We have come across these before in parameters such as $0 but let's take a look at another $-. We can expand these parameters to gain an understanding of their use, using the echo command:
$ echo "My shell is $0 and the shell options are: $-"
From the annotated text that I have added, we can understand that the $- option represents the shell options that are configured. These can be displayed using the set -o command but it can be read programmatically using $-.
We can see this in the following screenshot:
The options set here are as follows:
- h: This is short for hashall; it allows for programs to be found using theĀ PATH parameter
- i: This shows that this is an interactive shell
- m: This is short for monitor; it allows the use of the bg and fg commands to bring commands in and out of the background
- B: This allows the brace expansion or mkdirdir{1,2}, where we create dir1 and dir2
- H: This allows history expansion of running commands, such as !501 to repeat commands from history