init at home

This commit is contained in:
2026-03-27 12:41:00 +01:00
commit 352c352056
58 changed files with 13083 additions and 0 deletions
@@ -0,0 +1,132 @@
## Grundlegende Methoden
### 1. Einfache Variante mit `$0`
```bash
#!/bin/bash
SCRIPT_PATH="$0"
echo "Skript wurde aufgerufen als: $SCRIPT_PATH"
```
### 2. Absoluter Pfad des Skripts
```bash
#!/bin/bash
SCRIPT_PATH="$(realpath "$0")"
echo "Absoluter Pfad des Skripts: $SCRIPT_PATH"
```
### 3. Verzeichnis des Skripts ermitteln
```bash
#!/bin/bash
SCRIPT_DIR="$(dirname "$(realpath "$0")")"
echo "Skript-Verzeichnis: $SCRIPT_DIR"
```
## Robuste Lösung für alle Szenarien
```bash
#!/bin/bash
# Funktion zur sicheren Ermittlung des Skript-Pfads
get_script_path() {
local source="${BASH_SOURCE[0]}"
# Auflösung von Symlinks
while [ -h "$source" ]; do
local dir="$(cd -P "$(dirname "$source")" && pwd)"
source="$(readlink "$source")"
[[ $source != /* ]] && source="$dir/$source"
done
echo "$(cd -P "$(dirname "$source")" && pwd)"
}
SCRIPT_DIR="$(get_script_path)"
SCRIPT_NAME="$(basename "$0")"
SCRIPT_FULL_PATH="$SCRIPT_DIR/$SCRIPT_NAME"
echo "Skript-Verzeichnis: $SCRIPT_DIR"
echo "Skript-Name: $SCRIPT_NAME"
echo "Vollständiger Pfad: $SCRIPT_FULL_PATH"
```
## Häufige Anwendungsfälle
### Relative Pfade vom Skript-Verzeichnis aus
```bash
#!/bin/bash
SCRIPT_DIR="$(dirname "$(realpath "$0")")"
# Zugriff auf andere Dateien relativ zum Skript
CONFIG_FILE="$SCRIPT_DIR/config.conf"
LOG_DIR="$SCRIPT_DIR/logs"
# Prüfen ob Konfigurationsdatei existiert
if [ -f "$CONFIG_FILE" ]; then
echo "Konfiguration gefunden: $CONFIG_FILE"
fi
```
### Einbindung anderer Skripts
```bash
#!/bin/bash
SCRIPT_DIR="$(dirname "$(realpath "$0")")"
# Andere Skripts aus dem gleichen Verzeichnis einbinden
source "$SCRIPT_DIR/common_functions.sh"
source "$SCRIPT_DIR/config.sh"
```
## Wichtige Unterschiede der Variablen
| Variable | Beschreibung | Beispiel |
|----------|--------------|----------|
| `$0` | Aufruf-Name des Skripts | `./script.sh` oder `/path/script.sh` |
| `${BASH_SOURCE[0]}` | Tatsächlicher Pfad (auch bei sourcing) | `/absolute/path/script.sh` |
| `$(dirname "$0")` | Verzeichnis des Aufrufs | `.` oder `/path` |
| `$(realpath "$0")` | Absoluter, aufgelöster Pfad | `/absolute/path/script.sh` |
## Besondere Situationen
### Bei gesourcten Skripts
```bash
# In gesourcten Skripts sollten Sie BASH_SOURCE verwenden
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
```
### Bei Symlinks
```bash
# Auflösung von Symlinks
SCRIPT_PATH="$(readlink -f "$0")"
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"
```
## Praktisches Beispiel
```bash
#!/bin/bash
# setup.sh - Installationsskript
# Ermittlung des Skript-Verzeichnisses
SCRIPT_DIR="$(dirname "$(realpath "$0")")"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
echo "Starte Installation..."
echo "Skript-Verzeichnis: $SCRIPT_DIR"
echo "Projekt-Root: $PROJECT_ROOT"
# Installation von Abhängigkeiten
pip install -r "$PROJECT_ROOT/requirements.txt"
# Kopieren von Konfigurationsdateien
cp "$SCRIPT_DIR/templates/config.ini" "$PROJECT_ROOT/config/"
echo "Installation abgeschlossen!"
```
## Tags
#bash #scripting #pfade #entwicklung
## Verwandte Themen
- [[BASH Grundlagen]]
- [[Dateisystem Navigation]]
- [[Skript Entwicklung Best Practices]]