187 lines
6.2 KiB
Bash
Executable File
187 lines
6.2 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Root-Rechte prüfen
|
||
if [ "$(id -u)" -ne 0 ]; then
|
||
echo "❌ Bitte als root ausführen!"
|
||
exit 1
|
||
fi
|
||
|
||
apt update && apt upgrade -y
|
||
|
||
# sources-list Config
|
||
read -p "❓ Soll die apt sources-list so konfiguriert werden, dass sie Contributions und non-free Software zum installieren ermöglicht? (j/n) [n]: " answer
|
||
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||
answer=${answer:-n} # Standardwert 'n', falls leer
|
||
|
||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||
# Datei-Pfad zur sources.list
|
||
SOURCE_LIST="/etc/apt/sources.list"
|
||
|
||
# Backup erstellen
|
||
cp "$SOURCE_LIST" "$SOURCE_LIST.bak"
|
||
|
||
echo "ℹ️ Aktualisiere $SOURCE_LIST..."
|
||
|
||
# Temporäre Datei erstellen
|
||
TEMP_FILE=$(mktemp)
|
||
|
||
# Fehlende Komponenten, die hinzugefügt werden sollen
|
||
REQUIRED_COMPONENTS=("main" "non-free" "non-free-firmware" "contrib")
|
||
|
||
while IFS= read -r line; do
|
||
# Falls die Zeile auskommentiert oder leer ist, unverändert übernehmen
|
||
if [[ "$line" =~ ^# || -z "$line" ]]; then
|
||
echo "$line" >>"$TEMP_FILE"
|
||
continue
|
||
fi
|
||
|
||
# Die ersten drei Felder als APT-Befehl, URL und Distribution speichern
|
||
APT_CMD=$(echo "$line" | awk '{print $1}')
|
||
APT_URL=$(echo "$line" | awk '{print $2}')
|
||
APT_DIST=$(echo "$line" | awk '{print $3}')
|
||
|
||
# Alle vorhandenen Komponenten sammeln (ab Feld 4)
|
||
CURRENT_COMPONENTS=$(echo "$line" | cut -d' ' -f4-)
|
||
|
||
# Set für aktuelle Komponenten erstellen
|
||
COMPONENTS_SET=($CURRENT_COMPONENTS)
|
||
|
||
# Fehlende Komponenten hinzufügen
|
||
for component in "${REQUIRED_COMPONENTS[@]}"; do
|
||
if ! [[ " ${COMPONENTS_SET[*]} " =~ " $component " ]]; then
|
||
COMPONENTS_SET+=("$component")
|
||
fi
|
||
done
|
||
|
||
# Neue Zeile mit ursprünglichem APT-Befehl, URL, Distribution und aktualisierten Komponenten schreiben
|
||
echo "$APT_CMD $APT_URL $APT_DIST ${COMPONENTS_SET[*]}" >>"$TEMP_FILE"
|
||
|
||
done <"$SOURCE_LIST"
|
||
|
||
# Originaldatei ersetzen
|
||
mv "$TEMP_FILE" "$SOURCE_LIST"
|
||
|
||
# apt aktualisieren
|
||
echo "🔄 Aktualisiere APT..."
|
||
apt update
|
||
|
||
echo "✅ Fertig! $SOURCE_LIST wurde aktualisiert."
|
||
fi
|
||
|
||
apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth wget curl
|
||
|
||
# GRUB-Config
|
||
read -p "❓ Soll GRUB so konfiguriert werden, dass es nur im Fehlerfall angezeigt wird? (j/n) [n]: " answer
|
||
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||
answer=${answer:-n} # Standardwert 'n', falls leer
|
||
|
||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||
echo "ℹ️ GRUB wird so konfiguriert, dass es nur im Fehlerfall angezeigt wird..."
|
||
|
||
# Sicherstellen, dass die Datei existiert
|
||
GRUB_CFG="/etc/default/grub"
|
||
|
||
if [[ ! -f "$GRUB_CFG" ]]; then
|
||
echo "❌ Fehler: $GRUB_CFG nicht gefunden!"
|
||
else
|
||
# Backup der aktuellen GRUB-Konfiguration
|
||
cp "$GRUB_CFG" "$GRUB_CFG.bak"
|
||
|
||
# Konfigurationsänderungen vornehmen
|
||
sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=0/' "$GRUB_CFG"
|
||
sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=hidden/' "$GRUB_CFG"
|
||
|
||
# Falls die Einträge nicht existieren, hinzufügen
|
||
grep -q '^GRUB_TIMEOUT=' "$GRUB_CFG" || echo 'GRUB_TIMEOUT=0' >>"$GRUB_CFG"
|
||
grep -q '^GRUB_TIMEOUT_STYLE=' "$GRUB_CFG" || echo 'GRUB_TIMEOUT_STYLE=hidden' >>"$GRUB_CFG"
|
||
|
||
# GRUB-Konfiguration aktualisieren
|
||
update-grub
|
||
|
||
echo "✅ GRUB wurde erfolgreich angepasst. Änderungen werden beim nächsten Boot wirksam."
|
||
fi
|
||
fi
|
||
|
||
# sbin in Path
|
||
read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer
|
||
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||
answer=${answer:-n} # Standardwert 'n', falls leer
|
||
|
||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||
cat << 'EOF' >/etc/profile.d/sbin_in_path.sh
|
||
if groups | grep -q "\bsudo\b"; then
|
||
case ":$PATH:" in
|
||
*":/sbin:"*) ;;
|
||
*) export PATH="$PATH:/sbin" ;;
|
||
esac
|
||
case ":$PATH:" in
|
||
*":/usr/sbin:"*) ;;
|
||
*) export PATH="$PATH:/usr/sbin" ;;
|
||
esac
|
||
fi
|
||
EOF
|
||
|
||
echo "ℹ️ sbin wurde zum PATH für sudo-Nutzer hinzugefügt."
|
||
fi
|
||
|
||
# sudo-Hinweis
|
||
read -p "❓ Soll ein sudo-Hinweis hinzugefügt werden? (j/n) [n]: " answer
|
||
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||
answer=${answer:-n} # Standardwert 'n', falls leer
|
||
|
||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||
cat << 'EOF' >/etc/profile.d/sudo_hint.sh
|
||
if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then
|
||
case " $(groups) " in *\ admin\ *|*\ sudo\ *)
|
||
if [ -x /usr/bin/sudo ]; then
|
||
echo 'To run a command as administrator (user "root"), use "sudo <command>".'
|
||
echo 'See "man sudo_root" for details.'
|
||
fi
|
||
esac
|
||
fi
|
||
EOF
|
||
|
||
echo "ℹ️ sudo-Hinweis wurde hinzugefügt!"
|
||
fi
|
||
|
||
# sudo-Hinweis
|
||
read -p "❓ Sollen die XDG-Data-Dirs gesetzt werden? (j/n) [n]: " answer
|
||
answer=${answer,,} # In Kleinbuchstaben umwandeln
|
||
answer=${answer:-n} # Standardwert 'n', falls leer
|
||
|
||
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
|
||
cat << 'EOF' >/etc/profile.d/xdg_dirs_desktop_session.sh
|
||
# /etc/profile.d/desktop_session_xdg_dirs.sh - Prepend a $DESKTOP_SESSION-named directory to $XDG_CONFIG_DIRS and $XDG_DATA_DIRS
|
||
|
||
DEFAULT_XDG_CONFIG_DIRS="/etc/xdg"
|
||
DEFAULT_XDG_DATA_DIRS="/usr/local/share/:/usr/share/"
|
||
|
||
if [ -n "$DESKTOP_SESSION" ]; then
|
||
# readd default if was empty
|
||
if [ -z "$XDG_CONFIG_DIRS" ]; then
|
||
XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"
|
||
fi
|
||
if [ -n "${XDG_CONFIG_DIRS##*$DEFAULT_XDG_CONFIG_DIRS/xdg-$DESKTOP_SESSION*}" ]; then
|
||
XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"/xdg-"$DESKTOP_SESSION":"$XDG_CONFIG_DIRS"
|
||
fi
|
||
export XDG_CONFIG_DIRS
|
||
# gnome is already added if gnome-session installed
|
||
if [ "$DESKTOP_SESSION" != "gnome" ]; then
|
||
if [ -z "$XDG_DATA_DIRS" ]; then
|
||
XDG_DATA_DIRS="$DEFAULT_XDG_DATA_DIRS"
|
||
fi
|
||
if [ -n "${XDG_DATA_DIRS##*/usr/share/$DESKTOP_SESSION*}" ]; then
|
||
XDG_DATA_DIRS=/usr/share/"$DESKTOP_SESSION":"$XDG_DATA_DIRS"
|
||
fi
|
||
export XDG_DATA_DIRS
|
||
fi
|
||
fi
|
||
EOF
|
||
|
||
echo "ℹ️ XDG-Data-Dirs wurden gesetzt!"
|
||
fi
|
||
|
||
chmod +x /etc/profile.d/*
|
||
|
||
echo "✅ Abgeschlossen. Zum Anwenden der Änderungen bitte neu einloggen!"
|