Tuning Bash

Tuning the Bash Environment

Overview of Configuration Files

  • The bash environment can be configured to maintain persistent settings through several files.

1. System-Wide Configuration Files
  • /etc/profile

    • A generic batch startup file that sets system-wide settings processed in a login shell.

  • /etc/bashrc

    • A file that is executed when opening a subshell (non-login shell).

2. User-Specific Configuration Files
  • .bash_profile in the user home directory

    • Similar to /etc/profile, but it contains user-specific settings.

  • .bashrc

    • A user-specific version of /etc/bashrc; runs for any shell and holds user-specific settings such as variables and aliases.

Custom Startup Files

  • Users can create custom startup files to ensure the persistence of configurations—like variables and aliases.

Example Usage of Configuration Files

  • The process of editing these files typically requires root privileges.

    • Example Command:
      bash sudo vim /etc/profile

    • It is advisable to use sudo to modify the file.

Analyzing /etc/profile
  • The content may include complex shell scripting examples that align with RHCSA objectives.

  • An example conditional check in the script:
    ```bash
    if [ -z $histsize ]; then histsize=1000
    fi

  - This checks if the variable `hist_size` is unset or null; if it is, it sets `hist_size` to 1000.

## General Recommendations
- **Leave Default Files Unchanged**  
  - It is generally recommended to avoid making direct changes to `/etc/profile` and `/etc/bashrc` files.
- **Use Drop-In Directories**  
  - Modifications are best done in the `etc/profile.d` directory, which allows for easier file management and protection against loss during updates.

## **/etc/bashrc vs. /etc/profile**
- **/etc/profile** 
  - Only processed for login shells at the user's initial shell startup.

- **/etc/bashrc** 
  - Executed for every new shell initiated; therefore, often seen as more powerful for command execution.
  - Similar recommendation: avoid altering directly and use drop-in directories for customization.

## Personal Shell File Tweaks
- Recommended to edit user-specific files such as:  
  - **.bash_profile**  
  - **.bashrc**  

### Creating an Alias Example
- To create a persistent alias:  

bash
alias sonder='echo hello world'

  - After defining an alias, one needs to source the `.bashrc` file to apply changes immediately:  

bash
source ~/.bashrc
```

  • When tested, this will print "hello world" when invoking sonder command.

Logout Configuration

  • .bash_logout

    • By default, it does not contain any commands.

    • Users can place any commands here that they wish to execute automatically upon logout.

Conclusion

  • Understanding and configuring these bash startup files is crucial for customizing the environment according to user preferences while maintaining system integrity and update compatibility.