Skip to content

Conversation

@vncntt
Copy link

@vncntt vncntt commented Jan 14, 2026

Summary

  • Add fish shell PATH support to install.sh using fish_user_paths
  • Fix PATH handling in ccind to detect and launch Claude from ~/.local/bin

Problem

  1. Fish shell users couldn't run ccind after installation because the install script only updated .bashrc and .zshrc

  2. Claude detection failed even when Claude was installed because:

    • Claude's installer places the binary in ~/.local/bin
    • This directory isn't always in PATH for non-interactive bash sessions
    • command -v claude would fail even though Claude was installed

Changes

install.sh

  • Add fish -c "set -Ua fish_user_paths '$CCIND_HOME/bin'" for fish shell support
  • Uses universal variable so it persists without modifying config.fish

bin/ccind

  • Check both PATH and ~/.local/bin when detecting Claude
  • Launch claude with PATH explicitly including ~/.local/bin

Test plan

  • Install ccind in fish shell and verify ccind command is available
  • Run ccind on a devcontainer where Claude is installed to ~/.local/bin
  • Verify Claude launches correctly

🤖 Generated with Claude Code

vncntt and others added 2 commits January 13, 2026 22:35
1. Fish shell support (install.sh):
   - Add ccind to fish_user_paths for fish shell users
   - Uses universal variable so it persists without config.fish modification

2. PATH handling (bin/ccind):
   - Check both PATH and ~/.local/bin when detecting Claude
   - Claude's installer places the binary in ~/.local/bin which may not be in PATH
   - Launch claude with PATH explicitly including ~/.local/bin

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use `PATH=... command` instead of `export PATH=...; exec command`.
This is more idiomatic - prefixing a command with VAR=value sets it
only for that command invocation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
vncntt added a commit to vncntt/claude-code-into-devcontainer that referenced this pull request Jan 14, 2026
This PR adds robustness improvements for ccind:

1. Build failure fallback:
   - When devcontainer up fails (often due to SSH agent forwarding issues
     with Dockerfile-with-features), ccind now looks for an existing Docker
     image and starts a container directly from it
   - This handles the common case where the image was previously built but
     rebuilding fails due to SSH issues

2. Manual Claude installation:
   - If Claude Code isn't found in the container (common with cached images),
     ccind automatically installs it using the official install script
   - No more manual intervention needed

3. Config sync from host:
   - Copies ~/.claude.json (authentication state)
   - Copies ~/.claude/settings.json (user preferences like model selection)
   - Copies plugins with path translation (host paths -> container paths)
   - Fixes file permissions after docker cp (copies as root, chowns to user)

4. PATH handling for Claude:
   - Check both PATH and ~/.local/bin when detecting Claude
   - Launch claude with PATH set correctly

Note: This PR includes changes that overlap with PR pipmc#1 (PATH handling).
If PR pipmc#1 is merged first, this PR will need rebasing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant