Karl Voit wrote: > Hi! > > I want to replace some shellscripts using ruby and therefore I need a > method to execute external scripts (ksh). Without rewriting a lot of > scripts, I need the possibility to execute external scripts in another > directory (as the ruby-script) but within their directory context: > > path1 -> rubyscript.rb > module.rb > > path2 -> shellscript.ksh > anotherscript.ksh > path3 -> last_script.ksh > found_another_one.pl > > shellscript.ksh calls the other scripts using relative path statements > but when I use system("path2/shellscript.ksh"), shellscript.ksh is > started with the rubyscript.rb-directory context and within > shellscript.ksh, the call of "./anotherscript.ksh" or > "path3/last_script.ksh" results in "script not found here you fool!". > > I tried some things like > system("cd path2; shellscript.ksh") > system("ENVIRONMENTVARIABLE=something shellscript.ksh") > but none of them worked out. > > What do you suggest? > > You can use Dir.chdir to temporarily change the current directory: Dir.chdir('path2') do system('shellscript.ksh') end After the block the current directory returns to its former state.