#!/bin/bash # This script launches IntelliJ IDEA with the current project # directory. The script is designed to be run by double-clicking it in # the GNOME Nautilus file manager. # First, we change the current working directory to the directory of # the script. # "${0%/*}" gives us the path of the script itself, without the # script's filename. # This command basically tells the system "change the current # directory to the directory containing this script". cd "${0%/*}" # Then, we move up one directory level. # The ".." tells the system to go to the parent directory of the current directory. # This is done because we assume that the project directory is one level up from the script. cd .. # Now, we use the 'setsid' command to start a new session and run # IntelliJ IDEA in the background. 'setsid' is a UNIX command that # runs a program in a new session. # The command 'idea .' opens IntelliJ IDEA with the current directory # as the project directory. The '&' at the end is a UNIX command that # runs the process in the background. The '> /dev/null' part tells # the system to redirect all output (both stdout and stderr, denoted # by '&') that would normally go to the terminal to go to /dev/null # instead, which is a special file that discards all data written to # it. setsid idea . &>/dev/null & # The 'disown' command is a shell built-in that removes a shell job # from the shell's active list. Therefore, the shell will not send a # SIGHUP to this particular job when the shell session is terminated. # '-h' option specifies that if the shell receives a SIGHUP, it also # doesn't send a SIGHUP to the job. # '$!' is a shell special parameter that expands to the process ID of # the most recent background job. disown -h $! sleep 2 # Finally, we use the 'exit' command to terminate the shell script. # This command tells the system to close the terminal window after # IntelliJ IDEA has been opened. exit