From 6cac49b7c4e4fc7d664dc37bb110a17e3a6fbb0c Mon Sep 17 00:00:00 2001 From: steffen Date: Sat, 24 Jan 2026 02:12:58 +0000 Subject: [PATCH] Add bashscript.sh --- bashscript.sh | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 bashscript.sh diff --git a/bashscript.sh b/bashscript.sh new file mode 100644 index 0000000..8a5a8db --- /dev/null +++ b/bashscript.sh @@ -0,0 +1,119 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Must be root +if [[ "${EUID}" -ne 0 ]]; then + echo "Kjør som root: sudo bash $0" + exit 1 +fi + +### 1) Ensure required packages installed +need_pkgs=(landscape-common figlet lolcat) +missing=() +for p in "${need_pkgs[@]}"; do + if ! dpkg -s "$p" >/dev/null 2>&1; then + missing+=("$p") + fi +done + +if ((${#missing[@]} > 0)); then + echo "Installerer manglende pakker: ${missing[*]}" + export DEBIAN_FRONTEND=noninteractive + apt-get update -y + apt-get install -y "${missing[@]}" +fi + +### 2) Ask punchline (clear wording, always from TTY) +echo +read -r -p "Skriv ønsket punchline (vises under hostname i banneret): " PUNCHLINE /dev/null || true + +# Remove old managed block (if any) +tmp="$(mktemp)" +awk -v s="$MARKER_START" -v e="$MARKER_END" ' + $0==s {inside=1; next} + $0==e {inside=0; next} + !inside {print} +' "$GLOBAL_BASHRC" > "$tmp" +cat "$tmp" > "$GLOBAL_BASHRC" +rm -f "$tmp" + +# Append fresh managed block (NO expansion while writing) +cat >> "$GLOBAL_BASHRC" <<'EOF' + +# >>> global custom bashrc (managed) >>> +# Only run in interactive shells +case "$-" in + *i*) ;; + *) return ;; +esac + +##### HISTORY / BASICS ##### +HISTCONTROL=ignoreboth +shopt -s histappend +HISTSIZE=999999 +HISTFILESIZE=999999 +shopt -s checkwinsize + +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +##### PROMPT (GLOBAL) ##### +export PS1="\[\e[0m\]\[\e[38;5;35m\]╭─(\[\e[38;5;38m\]\t\[\e[38;5;35m\])-(\[\e[38;5;38m\]\j\[\e[38;5;35m\])-(\[\e[38;5;38m\]\H\[\e[38;5;35m\])-(\[\e[38;5;38m\]\w\[\e[38;5;35m\])\n\[\e[38;5;35m\]╰──🚀 \[\e[0m\]" + +##### COLORS / ALIASES ##### +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +alias ll='ls -alF' +alias la='ls -A' +alias l='ls -CF' + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +##### BANNER ##### +LOLCAT="/usr/games/lolcat" +if [ ! -x "$LOLCAT" ]; then + LOLCAT="$(command -v lolcat 2>/dev/null || true)" +fi +[ -z "$LOLCAT" ] && LOLCAT="cat" + +figlet "$(hostname)" -c | "$LOLCAT" +figlet -f digital "__PUNCHLINE__" -c | "$LOLCAT" +landscape-sysinfo | "$LOLCAT" +# <<< global custom bashrc (managed) <<< + +EOF + +# Replace placeholder with user punchline (safe) +safe_punchline="$(printf '%s' "$PUNCHLINE" | sed 's/[\/&]/\\&/g')" +sed -i "s/__PUNCHLINE__/${safe_punchline}/g" "$GLOBAL_BASHRC" + +echo +echo "Ferdig ✅" +echo "Global PS1 + banner er nå aktivt for alle brukere." +echo "Kjør scriptet på nytt for å endre punchline."