2.5 KiB
2.5 KiB
Shell Tool
This document provides details on the shell tool.
run_shell_command
-
Purpose: Executes a given shell command. On Windows, this will be executed with
cmd.exe /c. On other platforms, it will be executed withbash -c. This tool is essential for interacting with the underlying operating system, running scripts, or performing command-line operations. -
Arguments:
command(string, required): The exact shell command to execute.description(string, optional): A brief description of the command's purpose, which will be shown to the user.directory(string, optional): The directory (relative to the project root) in which to execute the command. If not provided, the command runs in the project root.
-
Behavior:
- The command is executed as a subprocess.
- It can start background processes using
&. - The tool returns detailed information about the execution, including:
Command: The command that was executed.Directory: The directory where the command was run.Stdout: Output from the standard output stream.Stderr: Output from the standard error stream.Error: Any error message reported by the subprocess.Exit Code: The exit code of the command.Signal: The signal number if the command was terminated by a signal.Background PIDs: A list of PIDs for any background processes started.
-
Examples:
-
Listing files in the current directory:
run_shell_command(command="ls -la") -
Running a script in a specific directory:
run_shell_command(command="./my_script.sh", directory="scripts", description="Run my custom script") -
Starting a background server:
run_shell_command(command="npm run dev &", description="Start development server in background")
-
-
Important Notes:
- Security: Be cautious when executing commands, especially those constructed from user input, to prevent security vulnerabilities.
- Interactive Commands: Avoid commands that require interactive user input, as this can cause the tool to hang. Use non-interactive flags if available (e.g.,
npm init -y). - Error Handling: Check the
Stderr,Error, andExit Codefields to determine if a command executed successfully. - Background Processes: When a command is run in the background with
&, the tool will return immediately and the process will continue to run in the background. TheBackground PIDsfield will contain the process ID of the background process.