How do I {set an environment variable, change directory} inside a program or shell script and have that change affect my current shell?
In general, you can’t, at least not without making special arrangements. When a child process is created, it inherits a copy of its parent’s variables (and current directory). The child can change these values all it wants but the changes won’t affect the parent shell, since the child is changing a copy of the original data. Some special arrangements are possible. Your child process could write out the changed variables, if the parent was prepared to read the output and interpret it as commands to set its own variables. Also, shells can arrange to run other shell scripts in the context of the current shell, rather than in a child process, so that changes will affect the original shell. For instance, if you have a C shell script named “myscript”: cd /very/long/path setenv PATH /something:/something-else or the equivalent Bourne or Korn shell script cd /very/long/path PATH=/something:/something-else export PATH and try to run “myscript” from your shell, your shell will fork and run the s
Related Questions
- How do I {set an environment variable, change directory} inside a program or shell script and have that change affect my current shell?
- How does the Ecosystem Restoration Program affect residents, agriculture, industry and the environment of California?
- Can I use a shell command/script to compile my programin in Magic C++ environment?