<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kengah Ireneaus</title>
    <description>The latest articles on DEV Community by Kengah Ireneaus (@4kit1-glitch).</description>
    <link>https://dev.to/4kit1-glitch</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3775003%2Fc3d04ce3-2b37-41a3-840a-1c448d9c8313.jpg</url>
      <title>DEV Community: Kengah Ireneaus</title>
      <link>https://dev.to/4kit1-glitch</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/4kit1-glitch"/>
    <language>en</language>
    <item>
      <title>A Month With Bash — Part 3: Building Projects</title>
      <dc:creator>Kengah Ireneaus</dc:creator>
      <pubDate>Tue, 04 Aug 2026 00:36:48 +0000</pubDate>
      <link>https://dev.to/4kit1-glitch/a-month-with-bash-part-3-building-projects-3od9</link>
      <guid>https://dev.to/4kit1-glitch/a-month-with-bash-part-3-building-projects-3od9</guid>
      <description>&lt;h2&gt;
  
  
  A Month With Bash — Part 3: Building Projects
&lt;/h2&gt;

&lt;p&gt;After all the expansions and syntax, I moved on to regex in bash. It wasn't too hard since I'd already worked with regex in Python, but alongside it I learned &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;sed&lt;/code&gt;, and &lt;code&gt;awk&lt;/code&gt; — tools that turned out to be extremely useful for automation.&lt;/p&gt;

&lt;p&gt;I built a few mini projects and started automating some of my small day-to-day tasks. I won't go too deep into that here, but you can check out my learning-bash GitHub repo, which has all my learning scripts.&lt;/p&gt;

&lt;p&gt;From there I covered conditionals, loops, and repetitive tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finally
&lt;/h2&gt;

&lt;p&gt;I learned about array variables in bash and shell options, &lt;br&gt;
went even further testing different ways of looping, and that's when I started actual project building(I am still building )&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;

&lt;span class="c"&gt;## looping with range functions -- somehow&lt;/span&gt;

&lt;span class="c"&gt;# python style looping {start..end}&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;1..10&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;    &lt;span class="c"&gt;# this uses brace expansion so using vars wont work becase of execution sequencing&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt;
&lt;span class="k"&gt;done

&lt;/span&gt;clear

&lt;span class="c"&gt;## c - slyle looping &lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; i &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt; i &amp;lt; 10&lt;span class="p"&gt;;&lt;/span&gt; i++ &lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="c"&gt;# variables works here well&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"hello &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="c"&gt;## using variables to loop&lt;/span&gt;

clear
&lt;span class="nv"&gt;start&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;span class="nv"&gt;stop&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10
&lt;span class="nv"&gt;step&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2

&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;seq&lt;/span&gt; &lt;span class="nv"&gt;$start&lt;/span&gt; &lt;span class="nv"&gt;$stop&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="c"&gt;# this uses the seq command&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"hello world"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Spending so much time on bash wasn't a waste. Not only did it force me to learn a huge number of commands, it changed how I think about my own machine — most of what I used to do manually, I can now automate. That shift alone made the month worth it.&lt;br&gt;
i am still learning and trying to get the best practices and things not to do&lt;/p&gt;




&lt;p&gt;&lt;em&gt;THANK YOU FOR READING THIS FAR. That is a rough summary of me writing bash for a month there is really a lot left unsaid here but still building and learning. If you are just starting out with bash or if you haven't tried it hope this helps&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;feel free to drop questions advice and corrections&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;




</description>
      <category>bash</category>
      <category>linux</category>
      <category>automation</category>
    </item>
    <item>
      <title>A Month With Bash — Part 2: Expansions</title>
      <dc:creator>Kengah Ireneaus</dc:creator>
      <pubDate>Tue, 04 Aug 2026 00:26:00 +0000</pubDate>
      <link>https://dev.to/4kit1-glitch/a-month-with-bash-part-2-expansions-3277</link>
      <guid>https://dev.to/4kit1-glitch/a-month-with-bash-part-2-expansions-3277</guid>
      <description>&lt;h2&gt;
  
  
  A Month With Bash — Part 2: Expansions
&lt;/h2&gt;

&lt;p&gt;Continuing from where I left off, the next thing I learned was special parameters in bash:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;"$*"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$#&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$?&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$@&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$N&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$-&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another important concept I picked up is how bash executes shell scripts. Bash is one of those languages that interprets each line as it goes — but it doesn't stop if a line fails. It continues on unless you explicitly set &lt;code&gt;set -o pipefail&lt;/code&gt; (or &lt;code&gt;-e&lt;/code&gt;, depending on what you want it to catch).&lt;/p&gt;

&lt;p&gt;Generally, the procedure looks like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tokenizing&lt;/strong&gt;: splitting the line into tokens, usually split using the &lt;code&gt;IFS&lt;/code&gt; value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Brace expansion&lt;/strong&gt;: a mechanism by which arbitrary strings can be generated.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;file&lt;span class="o"&gt;{&lt;/span&gt;1,2,3&lt;span class="o"&gt;}&lt;/span&gt;.txt
&lt;span class="c"&gt;## output: file1.txt file2.txt file3.txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bash preserves the order from left to right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tilde expansion&lt;/strong&gt;: this is where expansion of special symbols takes place.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;~&lt;/code&gt; represents the &lt;code&gt;HOME&lt;/code&gt; built-in variable&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;~+&lt;/code&gt; represents &lt;code&gt;PWD&lt;/code&gt;, the current working directory&lt;/li&gt;
&lt;li&gt;and others
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/Desktop &lt;span class="c"&gt;# this is $HOME/Desktop&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$DIR&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Parameter expansion&lt;/strong&gt;: introduced with the &lt;code&gt;$&lt;/code&gt; symbol.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# ${} — the braces can be omitted for normal variables but not for array-type variables&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Command substitution&lt;/strong&gt;: very important — it lets you assign the output of a command to a variable, and use commands inside &lt;code&gt;if&lt;/code&gt; and &lt;code&gt;for&lt;/code&gt; statements. Done with &lt;code&gt;$(command to execute)&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;week_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%A&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="c"&gt;# gets the current day of the week&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$week_name&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generally, &lt;code&gt;$()&lt;/code&gt; spawns a new shell instance, so it's advisable to avoid it where possible, for latency reasons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arithmetic expansion&lt;/strong&gt;: just from the name, this allows evaluation of arithmetic expressions and substitution of the result. It starts with &lt;code&gt;$(( expression ))&lt;/code&gt;. There are some rules — bash doesn't support floating point arithmetic natively, so you'd reach for &lt;code&gt;bc&lt;/code&gt; if you need it. I won't go deep into that here since this isn't a full bash tutorial.&lt;/p&gt;

&lt;p&gt;Here's a simple BMI calculator I wrote while practicing this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;

&lt;span class="c"&gt;# script calculates user's BMI and gives a recommendation&lt;/span&gt;

&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-euo&lt;/span&gt; pipefail

&lt;span class="c"&gt;# ---------------- read parameters ----------------&lt;/span&gt;
&lt;span class="nv"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nv"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$2&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nv"&gt;bmi&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;bc &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s2"&gt;"scale=2; &lt;/span&gt;&lt;span class="nv"&gt;$weight&lt;/span&gt;&lt;span class="s2"&gt; / (&lt;/span&gt;&lt;span class="nv"&gt;$height&lt;/span&gt;&lt;span class="s2"&gt;^2)"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# ---------------- test ----------------&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;bc &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$bmi&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt; 18.5"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"UNDERWEIGHT"&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;bc &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$bmi&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt; 25"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"normal weight"&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;bc &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$bmi&lt;/span&gt;&lt;span class="s2"&gt; &amp;lt; 30"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"overweight"&lt;/span&gt;
&lt;span class="k"&gt;else
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"obese"&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Process substitution&lt;/strong&gt;: this saves the output of a process into a temporary file-like descriptor under &lt;code&gt;/dev/fd/N&lt;/code&gt;. It lets you feed command output into programs that expect a file as input. Done with &lt;code&gt;&amp;gt;(command)&lt;/code&gt; and &lt;code&gt;&amp;lt;(command)&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;

&lt;span class="c"&gt;# script demonstrates process substitution&lt;/span&gt;
&lt;span class="c"&gt;# process substitution is when you want to use the output of a command&lt;/span&gt;
&lt;span class="c"&gt;# as the input to a command that needs files as parameters&lt;/span&gt;

&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-euo&lt;/span&gt; pipefail

&lt;span class="c"&gt;# gets the difference between two texts without making temp files&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;diff &lt;span class="nt"&gt;-p&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"hello mr beast"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"hello mr beast."&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# note: &amp;lt;(cmd) uses the output of a command as a file&lt;/span&gt;
&lt;span class="c"&gt;# &amp;gt;(cmd) takes input from a program and feeds it to the command as a file&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Word splitting and globbing&lt;/strong&gt;: occurs after expansion, only on unquoted values.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Next up: regex, grep/sed/awk, and moving into building actual projects.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>linux</category>
      <category>automation</category>
      <category>fedora</category>
    </item>
    <item>
      <title>A month with bash</title>
      <dc:creator>Kengah Ireneaus</dc:creator>
      <pubDate>Mon, 03 Aug 2026 14:20:00 +0000</pubDate>
      <link>https://dev.to/4kit1-glitch/a-month-with-bash-490g</link>
      <guid>https://dev.to/4kit1-glitch/a-month-with-bash-490g</guid>
      <description>&lt;h2&gt;
  
  
  A Month With Bash
&lt;/h2&gt;

&lt;p&gt;*this began as one long write-up but i decided to split it into three parts &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.tolink"&gt;Part 1: Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/4kit1-glitch/a-month-with-bash-part-2-expansions-3277"&gt;Part 2: Going deeper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/4kit1-glitch/a-month-with-bash-part-3-building-projects-3od9"&gt;Part 3: Project building&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A month ago I decided to learn bash so I could use my Fedora machine more effectively. My original plan was to just learn some commands and get over with it, but as I began reading resources and books, I quickly noticed how important it is for Linux users, automation experts, and system admins. The thing that amazed me most is that I could literally automate almost every repetitive process I do on my PC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Starting off with bash wasn't really bad or difficult, maybe because I already had experience programming in C and Python. Learning the basic syntax of bash wasn't much of a problem — things like variables and printing to the terminal were quite easy to grasp. I also learned some theory on shell types and their differences, which wasn't too hard either.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# create, assign, and print a variable&lt;/span&gt;
&lt;span class="nv"&gt;my_var&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"declared"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$my_var&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Moving Deeper Into Bash
&lt;/h2&gt;

&lt;p&gt;After the basics, where bash just seemed like a small programming language, things changed once I started learning about the bash environment. This is what began to show me what makes it special and unique. I learned about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shell initialization scripts

&lt;ul&gt;
&lt;li&gt;System-wide&lt;/li&gt;
&lt;li&gt;Individual user scripts&lt;/li&gt;
&lt;li&gt;How to configure them&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Honestly, these files affect system behavior, so it's better to avoid touching them unless you know what you're doing. This part was quite confusing at first, but with practice it became clearer. I still don't fully understand every use case of these initialization scripts off-hand, and explaining them isn't the goal of this post.&lt;/p&gt;

&lt;p&gt;After that I took some time to learn about reserved variables — just a curated table of them. They're very useful because they enable some handy functionality, and they're good to use when making a script portable. Some important ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HOME&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IFS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PWD&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PATH&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DIRSTACK&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;location&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="c"&gt;# this stores the location of the home directory&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$location&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Next up: special parameters, expansions, and how bash actually executes a script line by line.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bash</category>
      <category>linux</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
