TinyCore Linux 和 RVM

TinyCore Linux 和 RVM

我正在运行 TinyCore Linux,当我尝试安装 RVM(需要一个用于 QA 自动化的便携式 Linux 发行版)时,我不断收到错误消息sh: syntax error:unexpected redirection

我不确定为什么会收到此错误,因为该echo $SHELL命令返回 BASH。

关于如何让这个工作或获得有关该问题的更多详细信息的任何想法?

答案1

您的 Tiny Core Linux 安装可能只安装了一个最低限度的 shell。这大概是忙碌盒。您可以通过检查是否/bin/sh符号链接到其他内容来验证这一点:

ls -l /bin/sh
lrwxrwxrwx    1 root     root             7 Dec 15 20:52 /bin/sh -> busybox

由于 Tiny Core Linux 将最低限度的操作系统加载到 RAM 中,因此这是可取的。但是,如果您需要功能更齐全的 shell,您可以通过应用程序浏览器(参见此处可用的应用程序列表,应用程序浏览器的命令行版本是tce-ab)。 Tiny Core Linux 目前有:bashtcsh.

要安装 bash:

tce-load -wi bash.tcz

默认 shell 仍然是,但是您可以通过在其中/bin/sh运行来生成 bash shell 。bash

设置tcuser的默认 shell:

which bash | sudo tee -a /etc/shells > /dev/null
sudo sed -i "/$(cat /etc/sysconfig/tcuser)/ s#:[^:]\+\$#:$(which bash)#" /etc/passwd

coreutils如果您正在寻找更多用于 bash 脚本的 GNU 标准实用程序,您可能还想安装 GNU:

tce-load -wi coreutils.tcz

答案2

看起来其中一个脚本正在运行,/bin/sh但使用了 bash 的扩展功能,可能是<<<<(.您可能有灰烬/bin/sh:这是合法的(并且 ash 明显比 bash 更快并且使用更少的内存,这就是为什么许多发行版不将 bash 作为/bin/sh),但偶尔您会遇到依赖 bash 但以#!/bin/sh.

$SHELL设置为 bash 是无关紧要的,每个脚本都由第一行指示的 shell 执行(舍邦, 这里#!/bin/sh)。我快速浏览了 RVM 脚本,看起来所有依赖 bash 扩展的脚本都正确地以#!/usr/bin/env bash.您之前有现有的吗~/.rvm?如果是这样,请尝试将其移开。

您可以通过使用该选项运行 shell 来获取 shell 脚本的执行跟踪-x。于是运行一下bash -x ./rvm看看哪里出错了。如果错误发生在从主rvm脚本间接调用的脚本中,请尝试添加set -x其他脚本(紧邻该#!行下方),以查看它们的执行跟踪。这应该有助于找到有问题的脚本。

相关内容