I have actually found for those who do not like to fully restart their boxes unless it is absolutely required the following...
You do not need to restart the whole machine to have changes to /etc/profile
take effect. All you need is to have your XWindows Desktop GUI restart so it re-reads configs (as it would if it were to be started as part of a system-wide restart).
For me I use xUbuntu which uses LightDM but you can sub in whatever executable calls your current desktop.
First, you can not use a terminal emulator from inside the desktop GUI itself to do this (at least not with LightDM) you need to either use SSH or a secondary console (if you hold Ctrl + Alt and hit an F Key or number key you should drop away from your graphical desktop login or screen to a plain terminal window). I also suggest you close out any remote desktop stuff like VNC if you are using SSH (obviously SSH can be connected you just do not want an open VNC window to be polling display 0 while it is trying to restart as this may hang the restart while it waits for you to terminate the VNC session).
I do this all the time with SSH and it is a big lifesaver especially when you are not physically by your machine and do not feel like waiting for a full restart and reconnecting :-D
Now the easy part once in a "secondary" terminal or SSH issue:
(Yes, this will kill your current session, be sure you do not mind, save any open documents or work)
sudo service lightdm restart
wait a minute as it kills the desktop and then starts it again (this can take a few good seconds as things are stopped and then executed again on start)
That's it, now when you head back to either console 0 or you go to to use VNC to connect again you will be greeted by the login prompt and login as normal and if you open a terminal emulator and go to issue your command you should now have no problems as everything was re-sourced just as if you did a full machine restart.
Just remember, if you issue sudo service lightdm restart
[or stop
, start
, whatever] from within the desktop environment itself using a terminal emulator the command will just hang there and nothing will seem to be happening. This is because you are currently using that console (aka display) 0 and so it can not fully go down and come back up as it is waiting for the desktop to not be in use before it runs the command.
Last Note: I have not tried to issue restart on the environment from within the desktop in a terminal emulator and then switch to another console that may then restart it, but if you are already going to switch the console then why not just run the command from there as it should be anyways?