Skip to content

Conversation

seefood
Copy link
Contributor

@seefood seefood commented Oct 7, 2025

Summary

Fixes SSH completion to preserve the @ sign when completing user@host combinations.

Problem

When typing ssh root@ser<TAB>, the completion would incorrectly produce:

ssh rootserver

Instead of the expected:

ssh root@server

Root Cause

The @ character was in COMP_WORDBREAKS, causing bash to treat it as a word boundary and strip it during completion.

Solution

Remove @ from COMP_WORDBREAKS (in addition to : which was already removed).

Changes:

export COMP_WORDBREAKS=${COMP_WORDBREAKS//:/}
export COMP_WORDBREAKS=${COMP_WORDBREAKS//@/}

This allows completion to preserve the full user@host format for:

  • ssh
  • scp
  • sftp
  • slogin

Testing

  • ✅ Passes shellcheck with no warnings
  • ✅ Passes shfmt formatting checks
  • ✅ Passes all pre-commit hooks
  • ✅ Completion now preserves user@host format

Related

Closes #2260

🤖 Generated with Claude Code

The SSH completion was removing the @ sign when completing user@host
combinations. For example, `ssh root@ser<TAB>` would complete to
`ssh rootserver` instead of `ssh root@server`.

**Root Cause:**
The @ character was in COMP_WORDBREAKS, causing bash to treat it as a
word boundary and remove it during completion.

**Solution:**
Remove @ from COMP_WORDBREAKS (in addition to : which was already removed).
This allows the completion to preserve the full user@host format.

**Testing:**
- Passes shellcheck with no warnings
- Passes shfmt formatting checks
- Completion now correctly preserves user@host format

Closes Bash-it#2260

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
seefood added a commit that referenced this pull request Oct 7, 2025
Updated all three planning documents to reflect the completed work:

**Issues Fixed (6 total)**:
- #2317: Auto-detect git remote (PR #2345)
- #2248: Laravel artisan completion (PR #2349)
- #2296: down4me URL malformation (PR #2350)
- #2260: SSH completion @ sign (PR #2351)
- #2238: Uninstall script backup (PR #2352)
- #2216: Node version conditional display (PR #2353)

**Changes to docs/plans/**:
1. bash-it-issues-comprehensive-analysis.md
   - Marked 5 quick wins as FIXED with PR numbers
   - Updated executive summary: 32 → 27 open issues
   - Updated work plan to show Phase 1 completed
   - Updated issue reference appendix

2. bash-it-quick-reference.md
   - Moved completed issues to "Fixed" section
   - Updated TL;DR metrics
   - Removed completed items from decision list
   - Updated metrics table with current progress

3. bash-it-roadmap-2025.md
   - Updated health metrics (32 → 27 issues)
   - Marked Phase 1 as COMPLETED
   - Listed all 6 PRs with dates
   - Updated success criteria checkmarks

**Remaining Work**:
- 1 quick fix (#2314 - todo alias rename)
- 18 stale issues to close
- 4 strategic decisions needed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
seefood and others added 2 commits October 7, 2025 16:04
Use character class syntax [:@] to remove both characters in one operation
as suggested by @akinomyoga in review.

Co-Authored-By: akinomyoga <[email protected]>
* master:
  Fix symlink handling in uninstall backup
  Update planning docs with completed issues and PRs
  Improve uninstall script to preserve current config before restoration
  Fix down4me function URL malformation issue
  Apply review feedback: use git --git-dir and simplify awk
  Add comprehensive issue analysis and 2025 roadmap documentation
  Fix remote name detection function
  Add heuristic for finding default remote name
@seefood seefood merged commit 1d79c0a into Bash-it:master Oct 7, 2025
4 of 6 checks passed
@seefood seefood deleted the fix/ssh-completion-at-sign branch October 7, 2025 14:06
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.

[Bug]: SSH completion for user@host removes the @

2 participants