24

Is there a way to completely restart Bash and reload .bashrc and .profile and the like? I'd like to make sure my changes worked out properly after editing these files.

shgnInc
  • 716
  • 7
  • 12
Naftuli Kay
  • 38,686
  • 85
  • 220
  • 311

4 Answers4

42

Have it replace itself with itself.

exec bash -l

Note that this won't affect things such as the cwd or exported variables.

Ignacio Vazquez-Abrams
  • 44,857
  • 7
  • 93
  • 100
9

I urgently suggest to log in on a separate window/screen. This way you still have a working session if something goes wrong with your changes to startup files. Also you are sure to have a clean environment.

Reason: I saw too many people locking themselves out of a system because of a simple typo in their .profile (or such).

ktf
  • 2,659
  • 18
  • 15
3

If your goal is simply to read the modified files again, you don't have to restart it. You can simply source it.

source filename

or

. filename # notice the dot

Note that this won't give you a "clean state" in a sense that it won't unset any set variables or defined functions...

rahmu
  • 19,673
  • 28
  • 87
  • 128
2
su -l yourOwnUserName

Will open a fresh shell for yourOwnUserName user with all the settings re-loaded. This is shell-independent, as it refers to system settings, not your specific shell. It also loads some system-wide settings that bash -l does not (like user groups).

rozcietrzewiacz
  • 38,754
  • 9
  • 94
  • 102
  • 1
    important note: "a fresh shell" here means a shell within your existing shell, so you are only nesting shells, not replacing your original one. The accepted answer does that properly. – underscore_d Sep 24 '15 at 00:40