How can I set environment variables when I ssh login to my Unix box by passing custom arguments?

On the CentOS machine, create a file in your home directory named .bashrc and set your environmental variables in there. For example, the contents of the file can be:

export VARIABLE=foo

Here's some discussion of this: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_01.html


You can also use the SendEnv and AcceptEnv options. This will allow environmental variables on the client to be passed to the server.

You will also need to change the server's sshd_config file to specify which environmental variables are accepted by the server. I'm not sure what you'll need to do with PuTTY to issue the SendEnv option, but that should get you started.


You can enter environment variables in the PuTTY configuration under Connection -> Data.

enter image description here

But this works only under certain conditions. Quote from the documentation:

The Telnet protocol provides a means for the client to pass environment variables to the server. [...]

Version 2 of the SSH protocol also provides a similar mechanism, which is easier to implement without security flaws. Newer SSH-2 servers are more likely to support it than older ones.

This configuration data is not used in the SSH-1, rlogin or raw protocols.

Additionally, this has to be allowed on the server side. For the OpenSSH server the configuration directive is named AcceptEnv. On an Ubuntu server it looks like this by default:

AcceptEnv LANG LC_*

This allows you to define the variable LANG and all variables starting with LC_ in PuTTY, so you can always get the output in your preferred locale.

If you want to set additional variables you have to add them to the list on all servers you want to connect to. On older (SSH1 only) hosts it won't work at all.


You could can modify PermitUserEnvironment in sshd.conf to allow processing of ~/.ssh/environment or "environment=" options on keys in ~/.ssh/authorized_keys.

The format of these two files differs. ~/.ssh/environment is lines of VARIABLBE=VALUE where in ~/.ssh/authorized_keys the environment option is environment="VARAIBLE=VALUE"