From 495d914aa2e23d2a1732b8c69e1a8432c948d9cf Mon Sep 17 00:00:00 2001 From: John Ajera <37360952+jajera@users.noreply.github.com> Date: Wed, 4 Jun 2025 07:37:58 +0000 Subject: [PATCH] fix: set file and folder permission for qchat resolves qchat failing to run --- src/amazon-q-cli/install.sh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/amazon-q-cli/install.sh b/src/amazon-q-cli/install.sh index 083f5a5..b32f836 100755 --- a/src/amazon-q-cli/install.sh +++ b/src/amazon-q-cli/install.sh @@ -162,23 +162,23 @@ for binary in ./q/bin/*; do fi done -# Additional setup for non-root users: create necessary directories and symlinks -if [ "$(id -u)" -ne 0 ]; then - USER_HOME="$HOME" - USER_NAME="$(id -un)" - - mkdir -p "$USER_HOME/.local/bin" - mkdir -p "$USER_HOME/.local/share/amazon-q" - mkdir -p "$USER_HOME/.amazon-q" +# System-wide: ensure /usr/local/bin/qchat exists and is executable +if [ -f /usr/local/bin/qchat ]; then + chmod +x /usr/local/bin/qchat +fi - # Create symlink for qchat if not already present - if [ ! -L "$USER_HOME/.local/bin/qchat" ]; then - ln -sf /usr/local/bin/qchat "$USER_HOME/.local/bin/qchat" +# Create a profile.d script to ensure symlink for all users (only if root) +if [ "$(id -u)" -eq 0 ]; then + cat <<'EOF' >/etc/profile.d/qchat-local-bin.sh +#!/bin/sh +if [ -n "$HOME" ] && [ -d "$HOME" ]; then + mkdir -p "$HOME/.local/bin" + if [ ! -L "$HOME/.local/bin/qchat" ] && [ -x /usr/local/bin/qchat ]; then + ln -sf /usr/local/bin/qchat "$HOME/.local/bin/qchat" fi - - chown -R "$USER_NAME":"$USER_NAME" "$USER_HOME/.local/bin" - chown -R "$USER_NAME":"$USER_NAME" "$USER_HOME/.local/share/amazon-q" - chown -R "$USER_NAME":"$USER_NAME" "$USER_HOME/.amazon-q" +fi +EOF + chmod +x /etc/profile.d/qchat-local-bin.sh fi # For testing purposes, ensure Amazon Q CLI commands are visible in /usr/local/bin