<p>I have a container running on Kubernetes where I would like to run a command from my local terminal. The working directory of the container based on its yaml file is at say <code>/opt/gopath/src/a/</code>. However, I would like to run the command at directory <code>/opt/gopath/src/b/</code>. Additionally, I also need to set certain temporary environment variables before running this command. So currently, this is what I am doing:</p>

<p><code>
kubectl exec $pod_name -- bash -c "cd ../b/; env ENV_VARIABLE_1=ENV_VALUE_2 &amp;&amp; env ENV_VARIABLE_2=ENV_VALUE_2 &amp;&amp; &lt;cmd to run&gt;".
</code></p>

<p>This seems to be working currently. However, I am not convinced that this is the best way to achieve this. Also, running this command displays all the environment variables in the container -- which I would like not to be printed if possible. Could anyone point me in the right direction?</p>

<p>In case of static variables, I would suggest using <a href="https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-pod-environment-variables-using-configmap-data" rel="noreferrer">Config maps</a>.</p>

<p>Since you need to use temporary variables from a local shell, there is no need to use long and complicated commands as exec connects your terminal to the running Container (pod). I tested your issue and created a simple environment variable on the local system. I used syntax provided by you:</p>

<pre><code>kubectl exec -it $pod_name -- sh -c 'key=123 key2=121; echo "$key $key2"'
</code></pre>

<p>To pass env vars, you can just set it like that and add delimiter ';' between variables and your command.</p>
