I have an sh script, that can only be run from a specific directory because it looks for the files in that directory and I don't want to change the sh file.
Suppose the file is in
wd = getwd()
system2 uses shQuote we can only use
system() and as already pointed out by @Dirk you can then use
system("cd ./sub && sh script.sh")