function os.chdir(p) -- string -- boolean string -- changes the current working directory of the calling process to the directory specified in *p*, returning true or false, error if not (p:sub(1,1) == "/") then local np = {} for k,v in pairs(fs.segments(os.getenv("PWD").."/"..p)) do if v == ".." then np[#np] = nil else np[#np+1] = v end end p = "/"..table.concat(np,"/") end if fs.list(p) then os.setenv("PWD",p) else return false, "no such directory" end end