Setting variables in environment.plist
Unload the launch agent:

launchctl unload ~/Library/LaunchAgents/environment.plist

Modify the plist/env settings
Load the launch agent again:

launchctl load ~/Library/LaunchAgents/environment.plist





You have to quit and relaunch Terminal to get the new value of the variable in the shell.

With the example of Kuldeep Yadav's comment the usr.aws.plist in ~/Library/LaunchAgent/ would look like this then:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
        &lt;key&gt;Label&lt;/key&gt;
        &lt;string&gt;usr.aws&lt;/string&gt;
        &lt;key&gt;ProgramArguments&lt;/key&gt;
        &lt;array&gt;
                &lt;string&gt;/bin/launchctl&lt;/string&gt;
                &lt;string&gt;setenv&lt;/string&gt;
                &lt;string&gt;AWS_SECRET_ACCESS_KEY&lt;/string&gt;
                &lt;string&gt;loremipsum&lt;/string&gt;
                &lt;string&gt;/bin/launchctl&lt;/string&gt;
                &lt;string&gt;setenv&lt;/string&gt;
                &lt;string&gt;AWS_ACCESS_KEY_ID&lt;/string&gt;
                &lt;string&gt;loremipsum2&lt;/string&gt;
                &lt;string&gt;/bin/launchctl&lt;/string&gt;
                &lt;string&gt;setenv&lt;/string&gt;
                &lt;string&gt;AWS_ACCESS_KEY&lt;/string&gt;
                &lt;string&gt;loremipsum3&lt;/string&gt;
                &lt;string&gt;/bin/launchctl&lt;/string&gt;
                &lt;string&gt;setenv&lt;/string&gt;
                &lt;string&gt;AWS_SECRET_KEY&lt;/string&gt;
                &lt;string&gt;loremipsum4&lt;/string&gt;
        &lt;/array&gt;
        &lt;key&gt;RunAtLoad&lt;/key&gt;
        &lt;true/&gt;
&lt;/dict&gt;
&lt;/plist&gt;


This is only tested (&amp; working) with bash &amp; zsh.