Skip to main content
Glama

microsandbox

by microsandbox
setup_env.sh4.66 kB
#!/bin/sh # setup_env.sh # ----------- # This script configures the user's shell environment to include ~/.local/bin # and ~/.local/lib in the appropriate path variables. # # Usage: # ./setup_env.sh [options] # # Options: # --force Force update even if paths are already configured # # Supported shells: # - bash # - zsh # - fish # - sh # # The script performs the following tasks: # 1. Detects user's shell # 2. Creates ~/.local/bin and ~/.local/lib if they don't exist # 3. Updates appropriate shell config files # 4. Sets up PATH and library paths (LD_LIBRARY_PATH/DYLD_LIBRARY_PATH) # Color variables RED="\033[1;31m" GREEN="\033[1;32m" YELLOW="\033[1;33m" RESET="\033[0m" # Logging functions info() { printf "${GREEN}:: %s${RESET}\n" "$1" } warn() { printf "${YELLOW}:: %s${RESET}\n" "$1" } error() { printf "${RED}:: %s${RESET}\n" "$1" } # Default values FORCE=false # Parse command line arguments for arg in "$@"; do case $arg in --force) FORCE=true shift ;; esac done # Detect OS OS="$(uname -s)" case "$OS" in Linux*) LIB_PATH_VAR="LD_LIBRARY_PATH";; Darwin*) LIB_PATH_VAR="DYLD_LIBRARY_PATH";; *) error "Unsupported operating system: $OS"; exit 1;; esac # Create directories if they don't exist create_directories() { info "Creating local directories if needed..." mkdir -p "$HOME/.local/bin" "$HOME/.local/lib" if [ $? -ne 0 ]; then error "Failed to create directories" exit 1 fi } # Function to check if a line exists in a file line_exists() { grep -Fxq "$1" "$2" 2>/dev/null } # Function to add environment config for sh/bash/zsh setup_posix_shell() { local shell_rc="$1" local shell_name="$2" info "Setting up $shell_name configuration..." # Check if config file exists if [ ! -f "$shell_rc" ]; then info "Creating new config file: $shell_rc" mkdir -p "$(dirname "$shell_rc")" echo "# Created by microsandbox setup" > "$shell_rc" echo >> "$shell_rc" fi # PATH configuration if ! line_exists 'export PATH="$HOME/.local/bin:$PATH"' "$shell_rc" || [ "$FORCE" = true ]; then echo >> "$shell_rc" echo '# Added by setup_env.sh' >> "$shell_rc" echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$shell_rc" info "Added PATH configuration to $shell_rc" fi # Library path configuration if ! line_exists "export $LIB_PATH_VAR=\"\$HOME/.local/lib:\$$LIB_PATH_VAR\"" "$shell_rc" || [ "$FORCE" = true ]; then echo "export $LIB_PATH_VAR=\"\$HOME/.local/lib:\$$LIB_PATH_VAR\"" >> "$shell_rc" info "Added library path configuration to $shell_rc" fi } # Function to set up fish shell setup_fish() { local fish_config="$HOME/.config/fish/config.fish" info "Setting up fish configuration..." # Check if config directory and file exist if [ ! -f "$fish_config" ]; then info "Creating new fish config file: $fish_config" mkdir -p "$(dirname "$fish_config")" echo "# Created by microsandbox setup" > "$fish_config" echo >> "$fish_config" fi # PATH configuration if ! line_exists "set -gx PATH $HOME/.local/bin \$PATH" "$fish_config" || [ "$FORCE" = true ]; then echo >> "$fish_config" echo '# Added by setup_env.sh' >> "$fish_config" echo "set -gx PATH $HOME/.local/bin \$PATH" >> "$fish_config" info "Added PATH configuration to $fish_config" fi # Library path configuration if ! line_exists "set -gx $LIB_PATH_VAR $HOME/.local/lib \$$LIB_PATH_VAR" "$fish_config" || [ "$FORCE" = true ]; then echo "set -gx $LIB_PATH_VAR $HOME/.local/lib \$$LIB_PATH_VAR" >> "$fish_config" info "Added library path configuration to $fish_config" fi } # Add this function to check if a program exists check_shell() { command -v "$1" >/dev/null 2>&1 } # Main setup function setup_shell_env() { create_directories info "Configuring detected shells..." # Configure bash if installed if check_shell bash; then setup_posix_shell "$HOME/.bashrc" "bash" fi # Configure zsh if installed if check_shell zsh; then setup_posix_shell "$HOME/.zshrc" "zsh" fi # Configure fish if installed if check_shell fish; then setup_fish fi # Always configure .profile for POSIX shell compatibility setup_posix_shell "$HOME/.profile" "sh" info "Environment setup complete for detected shells!" info "Please restart your shell or source your shell's config file" } # Run main setup setup_shell_env

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/microsandbox/microsandbox'

If you have feedback or need assistance with the MCP directory API, please join our Discord server