Shells enable users to enter commands and run programs from the command line. Common shells include Bourne, C, and newer shells have added features like command history, line editing, and tab completion. Shells allow environment variables to customize settings, I/O redirection to modify program input/output, and special characters and quotes to control command parsing and argument passing.