Shell Tool (run_shell_command
)
This document describes the run_shell_command
tool for the Gemini CLI.
Description
Use run_shell_command
to interact with the underlying system, run scripts, or perform command-line operations. run_shell_command
executes a given shell command. On Windows, the command will be executed with cmd.exe /c
. On other platforms, the command will be executed with bash -c
.
Arguments
run_shell_command
takes the following 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.
How to use run_shell_command
with the Gemini CLI
When using run_shell_command
, the command is executed as a subprocess. run_shell_command
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.
Usage:
run_shell_command(command="Your commands.", description="Your description of the command.", directory="Your execution directory.")
run_shell_command
examples
List files in the current directory:
run_shell_command(command="ls -la")
Run a script in a specific directory:
run_shell_command(command="./my_script.sh", directory="scripts", description="Run my custom script")
Start 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 Code
fields 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 PIDs
field will contain the process ID of the background process.