#!/bin/bash # This script is helpful in entering an interactive shell from a bazel build # before running a given bazel executable. # This can provide a quick way to explore the sandbox directory and filesystem. # Typical use is with # # bazel run --run_under=//tools/bazel:shell_wrapper //:target # OR # bazel run --config=shell //:target shell='/bin/bash' rcfile='/tmp/pytorch_bazel_tools_shellwrap' while [[ $# -gt 0 ]] ; do case "$1" in --shell_bin_path) # path for the shell executable shell="$2" shift 2 ;; --rcfile) # path for the file used to write the environment rcfile="$2" shift 2 ;; *) # remaining arguments are part of the command for execution break ;; esac done if ! tty -s; then echo 'A tty is not available.' echo "Use \`bazel run\`, not \`bazel test\`." exit 1 fi NOCOLOR='\033[0m' YELLOW='\033[1;33m' # store the environment in a file export PYTORCH_SHELL_COMMAND=$* echo "alias run=\"$*\"" > "$rcfile" echo "PS1='\s-\v\$ '" >> "$rcfile" echo ===== # print the execution command (command is yellow) echo -e "alias run=${YELLOW}$PYTORCH_SHELL_COMMAND${NOCOLOR}" echo ===== echo "Entering interactive shell at the execution root:" # quote escape all the arguments to use as a single input string cmd="'$shell' --noprofile --rcfile '$rcfile'" # run the command in a script psuedo terminal and dump to null /usr/bin/script -c "$cmd" -q /dev/null