Search the FAQ Archives

3 - A - B - C - D - E - F - G - H - I - J - K - L - M
N - O - P - Q - R - S - T - U - V - W - X - Y - Z
faqs.org - Internet FAQ Archives

Unix - Frequently Asked Questions (2/7) [Frequent posting]
Section - How do I ... and have that change affect my current shell?

( Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page )
[ Usenet FAQs | Web FAQs | Documents | RFC Index | Counties ]


Top Document: Unix - Frequently Asked Questions (2/7) [Frequent posting]
Previous Document: Why do I get [some strange error message] when I "rsh host command" ?
Next Document: How do I redirect stdout and stderr separately in csh?
See reader questions & answers on this topic! - Help others by sharing your knowledge

2.8)  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 shell script in a subprocess.  The subprocess is also
      running the shell; when it sees the "cd" command it changes *its*
      current directory, and when it sees the "setenv" command it
      changes *its* environment, but neither has any effect on the
      current directory of the shell at which you're typing (your login
      shell, let's say).

      In order to get your login shell to execute the script (without
      forking) you have to use the "." command (for the Bourne or Korn
      shells) or the "source" command (for the C shell).  I.e. you type

        . myscript

      to the Bourne or Korn shells, or

        source myscript

      to the C shell.

      If all you are trying to do is change directory or set an
      environment variable, it will probably be simpler to use a C
      shell alias or Bourne/Korn shell function.  See the "how do I get
      the current directory into my prompt" section of this article for
      some examples.

      A much more detailed answer prepared by
      xtm@telelogic.se (Thomas Michanek) can be found at
      ftp.wg.omron.co.jp in /pub/unix-faq/docs/script-vs-env.

User Contributions:

1
Report this comment as inappropriate
Sep 27, 2021 @ 1:13 pm
Hello ... Im looking a lover..
I love oral sex! Write me - tinyurl.com/yz6aajf4
2
Report this comment as inappropriate
Oct 3, 2021 @ 2:14 pm
Try Your luck and win a FREE $500 or $1000 coupon! - tinyurl.com/yhxaqmng
3
Report this comment as inappropriate
Oct 6, 2021 @ 3:15 pm
Hi baby!! my name is Virginia...
I love oral sex! Write me - is.gd/be2piI
4
Report this comment as inappropriate
Oct 7, 2021 @ 12:00 am
Try Your luck and win a Free Coca-Cola Pack! - tinyurl.com/y58phmar
5
Report this comment as inappropriate
Oct 12, 2021 @ 3:15 pm
WiFiBooster Pro provides you max speed with 300Mbps, no delay for playing game, online transfer files and video chat! Works with Any Router and Device (Smartphone, Computer, Smart tv, etc). Get 50% Off Today! Order Here - is.gd/OdxGOK
6
Report this comment as inappropriate
Oct 18, 2021 @ 3:03 am
Fill out the form and win a Free $500 or $1000 voucher! - tinyurl.com/yf9odcpg
7
Report this comment as inappropriate
Oct 18, 2021 @ 4:16 pm
hey dear!!! my name is Sophia...
I want sex! Here are my photos - is.gd/kZlpA3

Comment about this article, ask questions, or add new information about this topic:




Top Document: Unix - Frequently Asked Questions (2/7) [Frequent posting]
Previous Document: Why do I get [some strange error message] when I "rsh host command" ?
Next Document: How do I redirect stdout and stderr separately in csh?

Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page

[ Usenet FAQs | Web FAQs | Documents | RFC Index ]

Send corrections/additions to the FAQ Maintainer:
tmatimar@isgtec.com (Ted Timar)





Last Update March 27 2014 @ 02:12 PM