Login Shell
Shell when you first login into system
Example: After you login into RHEL 10, the graphical interface is login shell.
Non-login Shell
New terminal window you open while already logged in
Example: You open new terminal window in RHEL 10.
Profile
It sets up the initial environment.
Example usage
Modify the PATH: If you install custom software in a non-standard folder (like ~/bin or ~/.local/bin), you add it to the PATH here so the system knows where the executables are.
Execute One-Time Scripts: If you want a specific "Message of the Day" or a system health check to run only when you first log in, put it here.
Export Global Variables: Export LANG=en_US.UTF-8 (Sets the system language/encoding).
File Name
Global: /etc/profile
User-specific: ~/.bash_profile
Bashrc
It is for things that make your manual typing faster and more visual.
Example usage
Store aliases and variable permanently: 7 - Local and Environment Variables & 8 - Alias
Customize the Prompt: Change how your command line looks (adding colors, timestamps)
File Name
Global: /etc/bashrc
User-specific: ~/.bashrc