merging and cleaning up
This commit is contained in:
@@ -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]]
|
||||
Reference in New Issue
Block a user