Exploring Shell Scripting and Batch Files
Exploring Shell Scripting and Batch FilesPermalink
Batch files are scripts that contain a series of commands to be executed by the command-line interpreter. These files can automate repetitive tasks and enhance productivity. In this article, we’ll explore creating batch files to set environment variables and execute shell commands in Windows, PowerShell, and Ubuntu, along with additional scripting nuances.
The AudiencePermalink
The audience for this article is
- those are working with Windows, PowerShell, and Ubuntu.
- who are not exposed to any scripting language
- who learned in the the college but out of touch
- want to automate tasks at shell level
WindowsPermalink
Setting Environment VariablesPermalink
In Windows, you can create a batch file (.bat
) to set environment variables and execute shell commands. Here’s an example:
@echo off
rem Setting an environment variable
set MY_VAR=my_value
rem Displaying the value of the environment variable
echo %MY_VAR%
rem Executing a shell command
dir
To execute this batch file you need to type of name of batch file like mybatch.bat on cmd terminal. You can modularize these batch files and create a main batch files to call all these based on the need or condition.
LoopingPermalink
You can use a for
loop to iterate over a set of values:
@echo off
for %%i in (1 2 3 4 5) do (
echo Iteration %%i
)
ConditionalsPermalink
You can use if
statements for conditional execution:
@echo off
set MY_VAR=my_value
if "%MY_VAR%" == "my_value" (
echo MY_VAR is set to my_value
) else (
echo MY_VAR is not set to my_value
)
VariablesPermalink
- Local Variables: Variables set within the script that are accessible only within the current script or session.
- Global Variables: Environment variables that are available system-wide.
PowerShellPermalink
Setting Environment VariablesPermalink
In PowerShell, you can create a script (.ps1
) to set environment variables and execute commands. Here’s an example:
# Setting an environment variable
$env:MY_VAR = "my_value"
# Displaying the value of the environment variable
Write-Output $env:MY_VAR
# Executing a shell command
Get-ChildItem
LoopingPermalink
You can use foreach
loops for iteration:
foreach ($i in 1..5) {
Write-Output "Iteration $i"
}
ConditionalsPermalink
You can use if
statements for conditional execution:
$MY_VAR = "my_value"
if ($MY_VAR -eq "my_value") {
Write-Output "MY_VAR is set to my_value"
} else {
Write-Output "MY_VAR is not set to my_value"
}
VariablesPermalink
- Local Variables: Variables declared within a script or function.
- Global Variables: Variables that are available throughout the PowerShell session.
Ubuntu (Linux)Permalink
Setting Environment VariablesPermalink
In Ubuntu, you can create a shell script (.sh
) to set environment variables and execute commands. Here’s an example:
#!/bin/bash
# Setting an environment variable
export MY_VAR="my_value"
# Displaying the value of the environment variable
echo $MY_VAR
# Executing a shell command
ls
.bashrc
Permalink
To set persistent environment variables and commands, you can add them to your .bashrc
file:
- Open the
.bashrc
file:nano ~/.bashrc
- Add the variables and commands:
export MY_VAR="my_value" echo "MY_VAR is set to $MY_VAR" ls
- Apply the changes:
source ~/.bashrc
By using “source”, it will affect the current session. Otherwise it will start a new session.
~/.
is to ensure execute bash script stored in home directory. This .bashrc file must stored only in the home directory.
LoopingPermalink
You can use for
loops for iteration:
#!/bin/bash
for i in {1..5}
do
echo "Iteration $i"
done
ConditionalsPermalink
You can use if
statements for conditional execution:
#!/bin/bash
MY_VAR="my_value"
if [ "$MY_VAR" == "my_value" ]; then
echo "MY_VAR is set to my_value"
else
echo "MY_VAR is not set to my_value"
fi
VariablesPermalink
- Local Variables: Variables declared and used within a script or function.
- Global Variables: Environment variables that are available system-wide.
Purpose of .bashrc filePermalink
Startup Configuration: The .bashrc file is executed whenever an interactive non-login shell is started. This means it configures the shell environment with user-defined settings, such as environment variables, aliases, and functions.
Customization: It allows users to customize their shell experience by adding configurations that are automatically applied every time a new terminal session is started.
Persistent Settings: It ensures that certain settings and environment variables persist across all shell sessions without the need for manual reconfiguration.
How It Differs from Regular Scripts
Automatic Execution: Unlike regular scripts, which must be explicitly executed, the .bashrc file is automatically sourced when a new interactive shell session begins.
Environment Changes: Changes made in .bashrc affect the current shell session, making it ideal for setting environment variables and aliases that you want available every time you open a terminal.
ConclusionPermalink
Creating batch files to set environment variables and execute shell commands can significantly streamline your workflow. Whether you’re using Windows, PowerShell, or Ubuntu, understanding these basics and additional scripting nuances will empower you to automate tasks effectively.