Lloyd Zusman <ljz / asfast.com> writes: > "Bill Guindon" <agorilla / gmail.com> writes: > >> On 4/29/06, Lloyd Zusman <ljz / asfast.com> wrote: >>> Daniel Berger <djberg96 / gmail.com> writes: >>> >>> > Robert Klemme wrote: >>> >> 2006/4/29, Bill Guindon <agorilla / gmail.com>: >>> >> >>> >>> I was hoping for a simpler solution, but that'll work. >>> >>> Thanks much. >>> >> I don't know why this complex stuff was suggested. Dir.chdir does the >>> >> job - or am I missing something? >>> > >>> > Dir.chdir doesn't change your directory in the shell it's running in >>> > after the program has finished. That's what he was after I think. >>> >>> Unfortunately, no program running in any language can change the >>> directory in the shell it's running in, after the program has finished >>> [ ... ] >>> >>> [ ... ] >>> >>> This is a function of how the operating system is designed. It's true >>> for windows-based systems as well as unix-like systems. >> >> Thanks for the detailed answer. >> >> That was pretty much my thinking on it, but I was doing some wishful >> thinking that there was some clever way to get around it. The batch >> file approach will work, but it's just not as elegant as I'd like. Was >> also wondering if there was some Win32 call that might pull it >> off. > > Well, back in the days of MS-DOS, an executable program could go through > your system's memory and find the place where the shell stored its idea > of the current working directory, which the program could then change. > But with the OS's that are built on top of the winnt architecture, those > days are gone, as far as I know. Actually, here's a sort-of clever way to get ruby to change your shell's idea of the current working directory. However, it requires a wrapper script that needs to be sourced by your shell. - Create a file that contains the following commands: Under unix-like systems, the file can have any name (for example, "ruby-prog"), and it should contain this line: cd `my-ruby-prog.rb` Under windows-based os's, make this a .bat or .cmd file (for example, "ruby-prog.cmd" or "ruby-prog.bat"), and make it contain these two lines: @echo off for /f "usebackq" %%i (`my-ruby-prog.rb`) do cd %i - In your ruby program, when it is ready to exit, issue these instructions: puts cwd exit(0) ... where the "cwd" variable contains the name of the directory which ruby wants the shell to change to after the ruby program exits. - Then, invoke the program as follows: Under unix-like systems, type this: source ruby-prog # csh-type shells or . ruby-prog # sh-type shells Under windows-based systems, just type this: ruby-prog -- Lloyd Zusman ljz / asfast.com God bless you.