linux scripting (bash start script) --- # Stap-voor-stap uitleg opdracht 2: scripting (BASH opstartscripts aanpassen) --- ## Begrippen en locaties BASH opstart-scripts * **Inlog-shells** (login shells) voeren scripts uit zoals: * `/etc/profile` * `~/.bash_profile` * `~/.bash_login` * `~/.profile` * **Niet-inlog-shells** (non-login shells, bv. wanneer je een terminal opent vanuit een grafische omgeving) gebruiken meestal: * `/etc/bash.bashrc` (Ubuntu/Debian) of `/etc/bashrc` (RHEL/CentOS/Rocky) * `~/.bashrc` * Globaal voor alle gebruikers worden vaak `/etc/profile` en `/etc/bashrc` gebruikt. --- # 1. Welkom boodschap voor root bij inlog-shell (punt a) Je wilt dat alleen de gebruiker **root** bij een **inlog-shell** de tekst `"Welkom, super(wo)man!"` ziet. --- ### Waar? Een goede plek is in het globale `/etc/profile` bestand. Dit bestand wordt ingeladen bij elke inlog-shell. --- ### Hoe? 1. Open `/etc/profile` met een editor met root rechten (bijv. `vim`, `nano`, of `vi`): bash sudo nano /etc/profile 2. Voeg onderaan toe (of ergens logische plek): bash if [ "$USER" = "root" ]; then echo "Welkom, super(wo)man!" fi 3. Sla het bestand op en sluit de editor. --- # 2. /etc/redhat-release weergeven bij alle shells (punt b) Bij **alle shells** (zowel inlog- als niet-inlog-shells) moet de inhoud van `/etc/redhat-release` worden getoond. --- ### Waar? Bij RHEL/CentOS/Rocky Linux is `/etc/bashrc` (globale bashrc) het beste omdat die bij alle shells wordt geladen. --- ### Hoe? 1. Open `/etc/bashrc` als root: bash sudo nano /etc/bashrc 2. Voeg aan het begin (of ergens logische plek) toe: bash cat /etc/redhat-release 3. Sla op en sluit af. --- # 3. PATH aanpassen voor alle gebruikers (punt c) Je wilt dat `/opt/microsoft/powershell/7` wordt toegevoegd aan de `PATH` variabele **voor alle gebruikers**, dus ook root. --- ### Waar? Dit kan weer in `/etc/profile` en `/etc/bashrc` zodat het altijd beschikbaar is. --- ### Hoe? 1. Open `/etc/profile`: bash sudo nano /etc/profile 2. Voeg toe (bij voorkeur onderaan, of vlakbij de andere aanpassingen): bash # Voeg PowerShell pad toe aan PATH als het nog niet in PATH staat if ! echo "$PATH" | grep -q "/opt/microsoft/powershell/7"; then export PATH="/opt/microsoft/powershell/7:$PATH" fi 3. Je kunt dezelfde code ook toevoegen in `/etc/bashrc`: bash sudo nano /etc/bashrc Voeg dezelfde snippet toe. --- # 4. todo.txt check voor niet-root gebruikers bij alle shells (punt d) * Voor **niet-root** gebruikers, bij **alle shells** (inlog en niet-inlog), check je of `~/todo.txt` bestaat. * Bestaat het, toon de inhoud. * Bestaat het niet, toon de boodschap `"Je hebt nog geen todo.txt! Maak deze z.s.m. aan."` --- ### Waar? We kunnen dit ook in `/etc/bashrc` zetten, omdat die bij alle shells geladen wordt. --- ### Hoe? 1. Open `/etc/bashrc`: bash sudo nano /etc/bashrc 2. Voeg ergens toe: bash if [ "$USER" != "root" ]; then if [ -f "$HOME/todo.txt" ]; then cat "$HOME/todo.txt" else echo "Je hebt nog geen todo.txt! Maak deze z.s.m. aan." fi fi --- # Complete voorbeeld `/etc/profile` na aanpassingen (voor overzicht): bash # Welkom boodschap alleen voor root (inlog-shell) if [ "$USER" = "root" ]; then echo "Welkom, super(wo)man!" fi # Voeg PowerShell 7 toe aan PATH als het nog niet in PATH staat if ! echo "$PATH" | grep -q "/opt/microsoft/powershell/7"; then export PATH="/opt/microsoft/powershell/7:$PATH" fi --- # Complete voorbeeld `/etc/bashrc` na aanpassingen: bash # Toon /etc/redhat-release altijd cat /etc/redhat-release # Voeg PowerShell 7 toe aan PATH als het nog niet in PATH staat if ! echo "$PATH" | grep -q "/opt/microsoft/powershell/7"; then export PATH="/opt/microsoft/powershell/7:$PATH" fi # Check todo.txt voor niet-root gebruikers if [ "$USER" != "root" ]; then if [ -f "$HOME/todo.txt" ]; then cat "$HOME/todo.txt" else echo "Je hebt nog geen todo.txt! Maak deze z.s.m. aan." fi fi --- # Hoe testen? 1. Log in als root via een terminal (bv. via `su -` of via ssh). Je zou dan moeten zien: * Eerst de tekst `Welkom, super(wo)man!` * Daarna de inhoud van `/etc/redhat-release` 2. Log in als gewone gebruiker. Je zou zien: * De inhoud van `/etc/redhat-release` * Ofwel de inhoud van `~/todo.txt`, of de melding `Je hebt nog geen todo.txt! Maak deze z.s.m. aan.` 3. Controleer de PATH: bash echo $PATH Je zou moeten zien dat `/opt/microsoft/powershell/7` aan het begin van PATH staat. --- # Samenvatting commando's die je gebruikt: bash sudo nano /etc/profile sudo nano /etc/bashrc # Test PATH echo $PATH # Test todo.txt (als gewone gebruiker) cat ~/todo.txt # Log in en uit met su - of ssh om testen ---