mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-27 15:36:23 +00:00
feat: quick little docker setup
This commit is contained in:
177
scripts/bash/setup-user-environment.sh
Normal file
177
scripts/bash/setup-user-environment.sh
Normal file
@@ -0,0 +1,177 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Setup user environment with sudo access and bash completion
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
log_info() { echo -e "${BLUE}ℹ️ $*${NC}"; }
|
||||||
|
log_ok() { echo -e "${GREEN}✅ $*${NC}"; }
|
||||||
|
log_warn() { echo -e "${YELLOW}⚠️ $*${NC}"; }
|
||||||
|
|
||||||
|
TARGET_USER="${1:-${USER}}"
|
||||||
|
|
||||||
|
# Check if running as root
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "This script must be run as root (use sudo)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
log_info "Setting up environment for user: $TARGET_USER"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 1. Add user to sudo group
|
||||||
|
log_info "Step 1/4: Adding $TARGET_USER to sudo group..."
|
||||||
|
if groups "$TARGET_USER" | grep -q "\bsudo\b"; then
|
||||||
|
log_ok "User already in sudo group"
|
||||||
|
else
|
||||||
|
usermod -aG sudo "$TARGET_USER"
|
||||||
|
log_ok "Added $TARGET_USER to sudo group"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Change default shell to bash
|
||||||
|
log_info "Step 2/4: Setting default shell to bash..."
|
||||||
|
CURRENT_SHELL=$(getent passwd "$TARGET_USER" | cut -d: -f7)
|
||||||
|
if [ "$CURRENT_SHELL" = "/bin/bash" ]; then
|
||||||
|
log_ok "Default shell already set to bash"
|
||||||
|
else
|
||||||
|
chsh -s /bin/bash "$TARGET_USER"
|
||||||
|
log_ok "Changed default shell from $CURRENT_SHELL to /bin/bash"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Create .bashrc with bash completion
|
||||||
|
log_info "Step 3/4: Setting up bash completion..."
|
||||||
|
USER_HOME=$(getent passwd "$TARGET_USER" | cut -d: -f6)
|
||||||
|
BASHRC="$USER_HOME/.bashrc"
|
||||||
|
|
||||||
|
if [ -f "$BASHRC" ]; then
|
||||||
|
log_warn ".bashrc already exists, checking for bash completion..."
|
||||||
|
if grep -q "bash_completion" "$BASHRC"; then
|
||||||
|
log_ok "Bash completion already configured in .bashrc"
|
||||||
|
else
|
||||||
|
log_info "Adding bash completion to existing .bashrc..."
|
||||||
|
cat >> "$BASHRC" << 'EOF'
|
||||||
|
|
||||||
|
# Enable bash completion
|
||||||
|
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
|
||||||
|
EOF
|
||||||
|
chown "$TARGET_USER:$TARGET_USER" "$BASHRC"
|
||||||
|
log_ok "Bash completion added to .bashrc"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_info "Creating new .bashrc with bash completion..."
|
||||||
|
cat > "$BASHRC" << 'EOF'
|
||||||
|
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||||
|
|
||||||
|
# If not running interactively, don't do anything
|
||||||
|
case $- in
|
||||||
|
*i*) ;;
|
||||||
|
*) return;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# History settings
|
||||||
|
HISTCONTROL=ignoreboth
|
||||||
|
HISTSIZE=10000
|
||||||
|
HISTFILESIZE=20000
|
||||||
|
shopt -s histappend
|
||||||
|
|
||||||
|
# Check window size after each command
|
||||||
|
shopt -s checkwinsize
|
||||||
|
|
||||||
|
# Make less more friendly for non-text input files
|
||||||
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||||
|
|
||||||
|
# Set a fancy prompt
|
||||||
|
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||||
|
|
||||||
|
# Enable color support for ls and grep
|
||||||
|
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
|
||||||
|
|
||||||
|
# Some more ls aliases
|
||||||
|
alias ll='ls -alF'
|
||||||
|
alias la='ls -A'
|
||||||
|
alias l='ls -CF'
|
||||||
|
|
||||||
|
# Enable bash completion
|
||||||
|
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
|
||||||
|
|
||||||
|
# Docker completion (if docker is installed)
|
||||||
|
if [ -f /usr/share/bash-completion/completions/docker ]; then
|
||||||
|
. /usr/share/bash-completion/completions/docker
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
chown "$TARGET_USER:$TARGET_USER" "$BASHRC"
|
||||||
|
chmod 644 "$BASHRC"
|
||||||
|
log_ok "Created .bashrc with bash completion"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. Create .bash_profile to source .bashrc for login shells
|
||||||
|
log_info "Step 4/4: Setting up bash_profile for login shells..."
|
||||||
|
BASH_PROFILE="$USER_HOME/.bash_profile"
|
||||||
|
|
||||||
|
if [ -f "$BASH_PROFILE" ]; then
|
||||||
|
if grep -q "\.bashrc" "$BASH_PROFILE"; then
|
||||||
|
log_ok ".bash_profile already sources .bashrc"
|
||||||
|
else
|
||||||
|
log_info "Adding .bashrc sourcing to existing .bash_profile..."
|
||||||
|
cat >> "$BASH_PROFILE" << 'EOF'
|
||||||
|
|
||||||
|
# Source .bashrc if it exists
|
||||||
|
if [ -f ~/.bashrc ]; then
|
||||||
|
. ~/.bashrc
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
chown "$TARGET_USER:$TARGET_USER" "$BASH_PROFILE"
|
||||||
|
log_ok ".bash_profile updated to source .bashrc"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_info "Creating .bash_profile..."
|
||||||
|
cat > "$BASH_PROFILE" << 'EOF'
|
||||||
|
# ~/.bash_profile: executed by bash(1) for login shells.
|
||||||
|
|
||||||
|
# Source .bashrc if it exists
|
||||||
|
if [ -f ~/.bashrc ]; then
|
||||||
|
. ~/.bashrc
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
chown "$TARGET_USER:$TARGET_USER" "$BASH_PROFILE"
|
||||||
|
chmod 644 "$BASH_PROFILE"
|
||||||
|
log_ok "Created .bash_profile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
log_ok "Environment setup complete for $TARGET_USER!"
|
||||||
|
echo ""
|
||||||
|
echo "Changes applied:"
|
||||||
|
echo " ✓ Added to sudo group (password required)"
|
||||||
|
echo " ✓ Default shell changed to /bin/bash"
|
||||||
|
echo " ✓ Bash completion enabled (.bashrc)"
|
||||||
|
echo " ✓ Login shell configured (.bash_profile)"
|
||||||
|
echo ""
|
||||||
|
log_warn "Important: You need to log out and log back in for shell changes to take effect"
|
||||||
|
log_info "To test sudo: sudo -v (will prompt for password)"
|
||||||
|
log_info "To test tab completion: type 'systemctl rest' and press TAB"
|
||||||
|
log_info "To verify shell: echo \$SHELL (should show /bin/bash)"
|
||||||
|
echo ""
|
||||||
Reference in New Issue
Block a user