DIRSTACK.insert(0, os.path.expanduser(pwd)) _change_working_directory(new_pwd) else: DIRSTACK.insert(0, os.path.expanduser(new_pwd)) maxsize = env.get("DIRSTACK_SIZE") if len(DIRSTACK) > maxsize: DIRSTACK = DIRSTACK[:maxsize] if not quiet and not env.get("PUSHD_SILENT"): return dirs([], None) return None, None, 0 pushd = ArgParserAlias(func=pushd_fn, has_args=True, prog="pushd") def popd_fn( nth: Annotated[tp.Optional[str], Arg(metavar="+N|-N", nargs="?")] = None, cd=True, quiet=False, ): """When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with ``dirs``; that is, popd is equivalent to popd +0. Parameters ----------
if len(tasks) == 0: return "", "There are no active jobs" messages = [] # if args.job_ids is empty, use the active task for tid in job_ids or [tasks[0]]: try: current_task = get_task(tid) except KeyError: return "", f"'{tid}' is not a valid job ID" auto_cont = XSH.env.get("AUTO_CONTINUE", False) if auto_cont or force_auto_continue: _continue(current_task) elif current_task["status"] == "stopped": messages.append(f"warning: job is suspended, use " f"'kill -CONT -{current_task['pids'][-1]}' " f"to resume\n") # Stop tracking this task tasks.remove(tid) del XSH.all_jobs[tid] messages.append(f"Removed job {tid} ({current_task['status']})") if messages: return "".join(messages) disown = ArgParserAlias(prog="disown", func=disown_fn, has_args=True)