WWW.YOUINFO.SITE
标签聚合 bash

/tag/bash

LinuxDo 最新话题 · 2026-06-11 22:18:42+08:00 · tech

环境:Windows 11 x64,Claude Code v2.1.170 众所周知claude系列模型并不是非常擅长写powershell,经常写错,而且有因为转义问题导致删库的风险。 但是之前claude code 在windows上默认调用的终端都是git bash而不是powershell,claude可以使用熟悉的bash语法,不会遇到这些问题。 然鹅,今天更新claude code到2.1.170后,发现它开始使用powershell作为终端,/config也找不到切回git bash 的选项。 有佬友知道怎么把claude code终端切回git bash吗? 5 个帖子 - 5 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-11 20:48:22+08:00 · tech

脚本 #!/data/data/com.termux/files/usr/bin/bash set -euo pipefail readonly SCRIPT_NAME="$(basename "$0")" readonly MIMO_PACKAGE_NAME="@mimo-ai/cli" readonly MIMO_PACKAGE_VERSION="${MIMO_CODE_VERSION:-${MIMOCODE_VERSION:-latest}}" readonly PREFIX_DIR="${PREFIX:-/data/data/com.termux/files/usr}" readonly HOST_MIMO_PATH="$PREFIX_DIR/bin/mimo" readonly MIMO_CLI_PKG_DIR="$PREFIX_DIR/lib/node_modules/@mimo-ai/cli" readonly MIMO_ARCH_PKG_NAME="@mimo-ai/mimocode-linux-arm64" readonly MIMO_ARCH_PKG_DIR="$PREFIX_DIR/lib/node_modules/$MIMO_ARCH_PKG_NAME" readonly TMP_ROOT="$HOME/tmp" readonly BACKUP_DIR="$TMP_ROOT/mimocode-backups" readonly WRAPPER_MARKER="# mimocode-termux-glibc-wrapper" # Resolved by install_mimo_package() after locating the real glibc ELF. MIMO_BINARY_PATH="" MIMO_RESOLVED_VERSION="" readonly C_BOLD_BLUE="\033[1;34m" readonly C_BOLD_GREEN="\033[1;32m" readonly C_BOLD_YELLOW="\033[1;33m" readonly C_BOLD_RED="\033[1;31m" readonly C_RESET="\033[0m" info() { printf '%b[INFO]%b %s\n' "$C_BOLD_BLUE" "$C_RESET" "$*"; } success() { printf '%b[ OK ]%b %s\n' "$C_BOLD_GREEN" "$C_RESET" "$*"; } warn() { printf '%b[WARN]%b %s\n' "$C_BOLD_YELLOW" "$C_RESET" "$*" >&2; } die() { printf '%b[ERR ]%b %s\n' "$C_BOLD_RED" "$C_RESET" "$*" >&2; exit 1; } usage() { cat <<EOF Usage: bash $SCRIPT_NAME What it does (glibc-runner mode, no proot): 1. Installs glibc-repo, refreshes apt metadata, installs glibc-runner. 2. Installs nodejs-lts + npm in Termux (if missing). 3. npm installs ${MIMO_PACKAGE_NAME} globally, then force-installs the ${MIMO_ARCH_PKG_NAME} native linux-arm64 package. 4. Skips MiMoCode's postinstall script because Termux Node reports process.platform='android' and the upstream script looks for a non-existent @mimo-ai/mimocode-android-arm64 package. 5. Replaces \$PREFIX/bin/mimo with a grun wrapper that runs the glibc ELF directly on Termux. Environment overrides: MIMO_CODE_VERSION npm package version/tag, default: ${MIMO_PACKAGE_VERSION} examples: latest, preview, 0.1.0, v0.1.0 MIMOCODE_VERSION alias for MIMO_CODE_VERSION Notes: - Official MiMoCode install docs: https://github.com/XiaomiMiMo/MiMo-Code - glibc-runner injects glibc via LD_LIBRARY_PATH; kernel calls are native. EOF } command_exists() { command -v "$1" >/dev/null 2>&1; } # ELF magic = 7f 45 4c 46; e_machine at offset 18 = 0xb7 for EM_AARCH64. is_valid_aarch64_elf() { local f="$1" [ -f "$f" ] || return 1 local magic machine magic=$(od -An -tx1 -N4 "$f" 2>/dev/null | tr -d ' \n') [ "$magic" = "7f454c46" ] || return 1 machine=$(od -An -tx1 -j18 -N1 "$f" 2>/dev/null | tr -d ' \n') [ "$machine" = "b7" ] } find_arch_binary() { local candidate for candidate in \ "$MIMO_ARCH_PKG_DIR/bin/mimo" \ "$MIMO_CLI_PKG_DIR/bin/.mimocode"; do if is_valid_aarch64_elf "$candidate"; then MIMO_BINARY_PATH="$candidate" return 0 fi done while IFS= read -r candidate; do if is_valid_aarch64_elf "$candidate"; then MIMO_BINARY_PATH="$candidate" return 0 fi done < <(find "$MIMO_ARCH_PKG_DIR" "$MIMO_CLI_PKG_DIR" -type f -size +10M 2>/dev/null) return 1 } ensure_tmp_root() { mkdir -p "$TMP_ROOT" [ -w "$TMP_ROOT" ] || die "Temp directory is not writable: $TMP_ROOT" export TMPDIR="$TMP_ROOT" } require_termux() { [ -d "$PREFIX_DIR" ] || die "This script must run in Termux." command_exists pkg || die "pkg not found. This script must run in Termux." if [ -r /proc/1/status ] && grep -q 'TracerPid:.*[1-9]' /proc/1/status 2>/dev/null; then warn "Detected non-zero TracerPid on PID 1 -- looks like a proot session." warn "Run this script from a plain Termux shell, not from inside proot-distro." fi } ensure_termux_package() { local package_name="$1" if dpkg -s "$package_name" >/dev/null 2>&1; then success "Termux package already installed: $package_name" return 0 fi info "Installing Termux package: $package_name" pkg install -y "$package_name" success "Installed Termux package: $package_name" } ensure_glibc_runner() { ensure_termux_package "glibc-repo" if ! apt-cache show glibc-runner >/dev/null 2>&1; then info "Refreshing apt metadata so glibc-repo becomes visible" pkg update -y || apt-get update -y || true fi ensure_termux_package "glibc-runner" command_exists grun || die "grun not found after installing glibc-runner." } ensure_nodejs() { if command_exists node && command_exists npm; then success "Termux node present: $(node --version), npm $(npm --version)" return 0 fi if dpkg -s nodejs >/dev/null 2>&1; then success "nodejs already installed" else ensure_termux_package "nodejs-lts" fi command_exists node && command_exists npm || die "node/npm not found after installing nodejs." } resolve_mimo_version() { local requested="$MIMO_PACKAGE_VERSION" if [ "$requested" != "latest" ]; then requested="${requested#v}" fi local pkg_spec="$MIMO_PACKAGE_NAME" if [ "$requested" != "latest" ]; then pkg_spec="${MIMO_PACKAGE_NAME}@${requested}" fi info "Resolving version for ${pkg_spec}" local resolved resolved=$(npm view "$pkg_spec" version 2>/dev/null | tail -n1) \ || die "Failed to resolve version for ${pkg_spec} via npm view" [[ "$resolved" =~ ^[0-9]+\.[0-9]+ ]] \ || die "npm view returned a bogus version: '$resolved'" MIMO_RESOLVED_VERSION="$resolved" } backup_existing_launcher() { mkdir -p "$BACKUP_DIR" [ -e "$HOST_MIMO_PATH" ] || return 0 if grep -Fq "$WRAPPER_MARKER" "$HOST_MIMO_PATH" 2>/dev/null; then success "glibc-runner wrapper already in place" return 0 fi local backup_path="$BACKUP_DIR/mimo.host-backup.$(date +%Y%m%d_%H%M%S)" cp -P "$HOST_MIMO_PATH" "$backup_path" success "Backed up existing launcher to $backup_path" } install_mimo_package() { resolve_mimo_version local main_version="$MIMO_RESOLVED_VERSION" local pinned_main="${MIMO_PACKAGE_NAME}@${main_version}" local arch_spec="${MIMO_ARCH_PKG_NAME}@${main_version}" info "Installing ${pinned_main} without upstream optional platform packages" npm install -g --force --ignore-scripts --omit=optional "$pinned_main" info "Installing ${arch_spec} for Termux via glibc-runner" npm install -g --force --ignore-scripts --os=linux --cpu=arm64 "$arch_spec" find_arch_binary || die "No valid aarch64 ELF found under $MIMO_ARCH_PKG_DIR. \ The arch package may not have unpacked correctly; inspect with: \ ls -la $MIMO_ARCH_PKG_DIR" success "MiMoCode native binary: $MIMO_BINARY_PATH ($(stat -c %s "$MIMO_BINARY_PATH" 2>/dev/null || echo '?') bytes)" } install_host_wrapper() { local tmp_wrapper tmp_wrapper="$(mktemp "$TMP_ROOT/mimo-grun.XXXXXX")" cat >"$tmp_wrapper" <<EOF #!/data/data/com.termux/files/usr/bin/sh $WRAPPER_MARKER mkdir -p "\$HOME/tmp" 2>/dev/null || true export TMPDIR="\${TMPDIR:-\$HOME/tmp}" exec grun "$MIMO_BINARY_PATH" "\$@" EOF chmod 755 "$tmp_wrapper" rm -f "$HOST_MIMO_PATH" mv "$tmp_wrapper" "$HOST_MIMO_PATH" chmod 755 "$HOST_MIMO_PATH" success "Installed Termux launcher: $HOST_MIMO_PATH" } verify_install() { info "Verifying binary via grun" grun "$MIMO_BINARY_PATH" --version info "Verifying Termux launcher" "$HOST_MIMO_PATH" --version local path_mimo="" path_mimo="$(command -v mimo 2>/dev/null || true)" if [ -n "$path_mimo" ] && [ "$path_mimo" != "$HOST_MIMO_PATH" ]; then warn "Your PATH resolves 'mimo' to $path_mimo, not $HOST_MIMO_PATH." warn "Move $PREFIX_DIR/bin earlier in PATH or remove the older launcher." fi success "MiMoCode setup completed (glibc-runner mode)" } main() { if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then usage exit 0 fi ensure_tmp_root require_termux ensure_glibc_runner ensure_nodejs backup_existing_launcher install_mimo_package install_host_wrapper verify_install cat <<EOF Run MiMoCode with: mimo Configuration: mode: glibc-runner (no proot) binary: $MIMO_BINARY_PATH launcher: $HOST_MIMO_PATH temp: $TMP_ROOT If the official installer previously added ~/.mimocode/bin before $PREFIX_DIR/bin, that older launcher may shadow this Termux wrapper. Troubleshooting: - If npm cannot resolve a preview version, install with: MIMO_CODE_VERSION=preview bash $SCRIPT_NAME - If subprocess errors mention libc/ld.so, the binary is loading Termux bionic libs via inherited LD_LIBRARY_PATH. Check glibc-runner docs. EOF } main "$@" 1 个帖子 - 1 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-08 18:25:17+08:00 · tech

问题是这样的 从 2.1.140+ (大约 144)开始 发现 Bash权限审批的弹窗搁那不弹出来还卡住了 现象是 ⏺ Bash(tar tzf /Users/haleclipse/WorkSpace/Node/ClaudeCodeRev/rc-server/dist/rc-server-0.1.0.tgz | wc -l; tar tzf /Users/haleclipse/WorkSpace/Node/ClaudeCodeRev/rc-ser…) ⎿ Waiting… ✶ Frosting… (5m 54s · ↓ 2.0k tokens) 嗯 就硬 Waiting… 不走了 头回发现的时候挂那20多分钟还以为咋了 是随机触发的 完全摸不着头脑 唯一的办法是 esc打断 然后重新发个继续(卡住了) 之类的 接续一下 能过去但是因为随机的问题十分恼人啊 就一直断断续续观察着 直到今天 我才将“稳定复现的方法”给 探察出来 (嗯 已经过去快三十个版本了 我才整理准确的描述 同时这逻辑问题还没修复?) 总结为只要 Ctrl + O 停在 transcript 视图 主对话流程有审批发起 弹窗的时候 就会直接 Waiting… 当你切换回去 百分之百停在那里 而且 如果反过来 当 主对话流程有审批即将发起时 你 Ctrl + O 切视图 也是百分百 直接中断这个对话了 甚至我按快一点 能拒绝两次 这当然不正常 旧版 (约139)可不会这样 如下 ⏺ 三个无害但会触发批准的命令——分别覆盖不同的"需批准"触发维度: ⏺ Bash(cat /etc/hostname 2>/dev/null || hostname) ⎿ Interrupted · What should Claude do instead? ⎿ Interrupted · What should Claude do instead? 最后么 跟 Claude 捣鼓半天 方向都接近 但是仅靠近 切入点不太对吧 也可能是我最开始描述不清楚 或者 它没有正确理解问题及其联系的关系 上下文积累多了 反而找不出来问题本质了 GPT 一滑铲几轮就找到准确的差异点了w 事实上问题来自于 CC 在弹窗的 权限/交互弹窗架构 设计上做了重构 把各种弹窗统一成 dialog channel 从旧的 React state queue 迁移到 request/response 模型 本来是好的改动 卒 问题找到了么 库库补逻辑就好了 万事大吉下班班 apply-claude-code-transcript-dialog-replay-fix.zip (6.9 KB) 故事告诉我们 定位问题 描述问题 并不是那么简单的一件事情 需要经验和收集信息 推断猜测 可以看到 就算有LLM辅助 也得描述明白问题是什么 互相对齐才能有正向的成效 (人与人之间也是一样啊喂!每天都是修行!) 另外还整出来一堆副产物 解锁 AutoMode 在不认可的LLM上的 门禁 (比如 Opus 4.6) 然而发现 4.8 也特么不工作啊 他就是一个 单独的LLM请求 提示词不一样 但不知道为什么这个分类器请求打过去 提示429 速率限制 又发现haiku是正常工作的 不得已我为了在Opus4.6上用 AutoMode 开出了个新变量 CLAUDE_CLASSIFIER_MODEL 可以设 分类器模型 apply-claude-code-enable-auto-mode.zip (6.9 KB) 然后是 ultracode 的解锁 同样是 因为想在4.6上捣鼓一下 apply-claude-code-unlock-ultracode-fix.zip (6.9 KB) 最后是旧货 对于 Ctrl + C 默认行为的改动 的一个回滚 旧行为是 你在Agent执行过程中 按 Ctrl + C 时 是会先tip一下 让你再按一次 就退出的 新行为是 直接特么绑定到 打断 Agent 了 (习惯了 人改不回来了(用过的肯定知道我在说什么 apply-claude-code-enable-keybindings-fix.zip (4.3 KB) 最后的最后 是 RC 的MVP实现基本算对齐官方那样的可用了 优雅永不过时 需要点感兴趣的人来测测试试 看看有哪些地方是不合适 以及 需要改进的 有些些理解门槛 感兴趣的 自己找下联系方式dd我 16 个帖子 - 14 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-04 17:41:16+08:00 · tech

当前环境声明的是 zsh,但执行器没找到对应 shell。我切到 /bin/bash 继续扫描,不改变项目文件。 命令执行器连 /bin/bash 也启动不了,像是这个线程的 shell 路径和容器不一致。我用 Node REPL 直接读取工作区文件系统来继续,不会卡在 shell 上。连 /bin/bash 也不可用,像是运行器的 shell 路径和环境上下文有点不一致。我先探一下可用 shell,然后继续 1 个帖子 - 1 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-02 21:06:55+08:00 · tech

如下报错: ⎿ Error: claude-opus-4-8[1m] is temporarily unavailable, so auto mode cannot determine the safety of Bash right now. Wait briefly and then try this action again. If it keeps failing, continue with other tasks that don’t require this action and come back to it later. Note: reading files, searching code, and other read-only operations do not require the classifier and can still be used. 请问各位大佬有办法解决吗? 1 个帖子 - 1 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-28 16:15:34+08:00 · tech

Bash Tool 之于 Windows Powershell 乱码一事 开发调优 cc这些在windows Bash Tool 调用命令 powershell时 很容易乱码 因为内置的powershell 5 是936 GBK的 一旦有中文输出或者符号什么的就会开始显示不了 这会极大的污染上下文和阻断LLM读入 提高了出错风险 比如误删库 [image] [image] 以及虽然 pwsh 7 是默认UTF-8 的但是 如果 被 pwsh这样调用也没招 被git-b… 最近困恼与win上claude中文乱码问题,昨天看了哈雷佬这个帖子,claude code的乱码问题已经解决了。但是我使用opencode和pi等其他agent工具时依旧中文乱码,让ai自己分析问题后,得到一个比较通用的方法就是 更改系统区域设置 ,使用UTF-8提供全球语言支持。 具体操作 win + i 打开设置 时间与语言 → 语言和地区 → 管理语言设置 更改系统区域设置 → beta版 → 应用 重启电脑 后就能正常输出中文和其他字符了 效果 opencode效果 oh-my-pi效果 5 个帖子 - 3 位参与者 阅读完整话题