#!/bin/bash # Function to check for sudo access check_sudo_access() { sudo -l &> /dev/null || { echo "Error: No sudo access. Exiting."; exit 1; } echo "User $(whoami) has sudo access." } # Function to set ulimit values set_ulimit() { local limits_file="/etc/security/limits.conf" grep -qE "^\* soft nofile\s+65536" "$limits_file" || { echo -e "* soft nofile 65536\n* hard nofile 65536" | sudo tee -a "$limits_file" > /dev/null echo "Ulimit values set." } sleep 5 } # Function to install Java install_java() { echo "Preparing to install Java..." sleep 5 local os_name os_name=$(grep '^NAME=' /etc/os-release | cut -d'=' -f2 | tr -d '"') case $os_name in "Amazon Linux") sudo yum install -y java-17-amazon-corretto-devel.x86_64 ;; "Red Hat Enterprise Linux" | "Oracle Linux Server") sudo yum install -y java-17-openjdk-devel.x86_64 ;; *) echo "Error: Unsupported OS: $os_name"; exit 1 ;; esac echo "Java 17 installation complete." sleep 5 } # Function to set Java path set_java_path() { local java_home bashrc_file user_home user_home=$(eval echo "~$1") bashrc_file="${user_home:-$HOME}/.bashrc" if ! cd /usr/lib/jvm || ! java_home=$(find . -maxdepth 1 -type d -name "java-17*" ! -type l | head -n 1); then echo "Error: Java installation directory not found. Exiting."; exit 1 fi java_home=$(realpath "$java_home") # Ensure Java is a developer version if [[ ! -f "$java_home/bin/jps" || ! -f "$java_home/bin/jar" ]]; then echo "ERROR: Installed Java is not a developer version."; exit 1 fi # Set JAVA_HOME and PATH if not already set grep -q "export JAVA_HOME=$java_home" "$bashrc_file" || { echo -e "export JAVA_HOME=$java_home\nexport PATH=\$JAVA_HOME/bin:\$PATH" >> "$bashrc_file" source "$bashrc_file" echo "JAVA_HOME set to: $java_home for user $(basename $user_home)" } } # Script execution check_sudo_access set_ulimit install_java set_java_path "$1" # Pass username argument