Function libraries let you keep useful commands in one place. You can reuse them in many scripts without rewriting.
Function libraries (sourcing scripts) in Bash Scripting
source /path/to/library.sh
# or
. /path/to/library.shsource or . runs the library script in the current shell.
Functions and variables from the library become available in your script.
hello. The main script loads it and calls the function.# library.sh hello() { echo "Hello from library!" } # main.sh source ./library.sh hello
. to source a utility script with an add function that sums two numbers.# utils.sh add() { echo "$(( $1 + $2 ))" } # script.sh . ./utils.sh add 3 5
This program has a library script with a function say_goodbye. The main script loads it and calls the function to print a message.
# library.sh say_goodbye() { echo "Goodbye!" } # main_script.sh #!/bin/bash source ./library.sh say_goodbye
Make sure the path to the library script is correct when sourcing.
Sourcing runs the script in the current shell, so variables and functions stay available.
Use chmod +x only if you want to run the library script directly, but sourcing does not require execute permission.
Function libraries help reuse code by sharing functions across scripts.
Use source or . to load a library script into your current script.
This keeps your scripts clean and easy to maintain.
Practice
Solution
Step 1: Understand function libraries
Function libraries contain reusable functions that can be shared across scripts.Step 2: Identify the benefit
Reusing functions avoids rewriting code and keeps scripts clean and maintainable.Final Answer:
To reuse functions across multiple scripts without rewriting code -> Option AQuick Check:
Function reuse = To reuse functions across multiple scripts without rewriting code [OK]
- Thinking libraries speed up script execution
- Confusing libraries with encryption tools
- Assuming libraries auto-update scripts
lib.sh in bash?Solution
Step 1: Recall bash sourcing commands
Bash usessourceor.to load another script.Step 2: Identify correct syntax
source lib.shcorrectly loads the script namedlib.sh.Final Answer:
source lib.sh -> Option CQuick Check:
source command = source lib.sh [OK]
- Using 'import' which is not a bash command
- Using 'include' or 'load' which are invalid in bash
- Forgetting to specify the script name
lib.sh:
function greet() {
echo "Hello, $1!"
}
main.sh:
source ./lib.sh
greet "Alice"What will be the output when running
bash main.sh?Solution
Step 1: Understand sourcing effect
Thesource ./lib.shcommand loads thegreetfunction intomain.sh.Step 2: Analyze function call
Callinggreet "Alice"runs the function, echoing "Hello, Alice!".Final Answer:
Hello, Alice! -> Option DQuick Check:
Function loaded and called = Hello, Alice! [OK]
- Not sourcing the library before calling the function
- Expecting variable $1 to be literal
- Confusing function definition with execution
source lib.sh greet "Bob"
But running it gives:
main.sh: line 2: greet: command not foundWhat is the most likely cause?
Solution
Step 1: Check function definition in lib.sh
Ifgreetis not defined inlib.sh, sourcing won't load it.Step 2: Analyze error message
"command not found" means the function is missing, not a syntax or permission error.Final Answer:
lib.sh does not define the greet function -> Option AQuick Check:
Missing function definition = lib.sh does not define the greet function [OK]
- Assuming source command typo without checking
- Ignoring function order in script
- Not verifying file permissions
utils.sh with a function timestamp that prints the current date and time. How should you write and use it in your script run.sh to print the timestamp?Solution
Step 1: Define timestamp function correctly
Usetimestamp() { echo $(date); }to print current date and time.Step 2: Source utils.sh in run.sh and call function
Usesource utils.shto load the function, then calltimestamp.Final Answer:
In utils.sh: timestamp() { echo $(date); } and in run.sh: source utils.sh; timestamp -> Option BQuick Check:
Correct function and sourcing = In utils.sh:timestamp() { echo $(date); }and in run.sh:source utils.sh; timestamp[OK]
- Running utils.sh instead of sourcing it
- Using echo date instead of echo $(date)
- Calling function without sourcing library
Ready to prove it?
Pass the test and this pattern moves unknown
