Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm running TinyCore Linux and when I tried to install RVM (needed a portable linux distro for QA Automation) I keep getting an error sh: syntax error:unexpected redirection.

I am unsure why I am getting this error since the echo $SHELL command returns BASH.

Any ideas on how I could get this working or get more details on the issue?

share|improve this question

migrated from stackoverflow.com Sep 11 '11 at 8:40

This question came from our site for professional and enthusiast programmers.

Some more detail on what commands you ran, how far they got, etc. might be useful. – Karpie Sep 11 '11 at 7:29
@karpie Unfortunately, that is as far as it got once I typed in the command: bash < <(curl -s rvm.beginrescueend.com/install/rvm) – JustAl Sep 11 '11 at 8:08

Your Tiny Core Linux install probably has a bare-minimum shell installed. This is probably busybox. You can verify this by checking if /bin/sh is symlinked to something else:

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

Since Tiny Core Linux loads the bare-minimum OS into RAM, this is desirable. However, if you need a more fully-featured shell you may install it via the Application Browser (See the List of available applications here, the command-line version of the application browser is tce-ab). Tiny Core Linux currently has: bash and tcsh.

To install bash:

tce-load -wi bash.tcz

The default shell is still /bin/sh, however you can spawn a bash shell by running bash from within it.

To set the tcuser's default shell:

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

You might want to also install the GNU coreutils if you're looking for more GNU standard utilities for use in bash scripts also:

tce-load -wi coreutils.tcz
share|improve this answer

It looks like one of the scripts is running under /bin/sh but uses extended features of bash, possibly <<< or <(. You presumably have ash as /bin/sh; that's legitimate (and ash is measurably faster and uses less memory than bash, which is why many distributions don't put bash as /bin/sh), but occasionally you run into scripts that rely on bash yet start with #!/bin/sh.

That you have $SHELL set to bash is irrelevant, each script is executed by the shell indicated on the first line (the shebang, here #!/bin/sh). I've had a quick look at the RVM scripts, and it looks like all the ones that rely on bash extensions correctly start with #!/usr/bin/env bash. Do you have a prior existing ~/.rvm? If so, try moving it out of the way.

You can get an execution trace for a shell script by running the shell with the -x option. So run bash -x ./rvm and see where the error occurs. If the error occurs in a script called indirectly from the main rvm script, try adding set -x in the other scripts as well (immediately below the #! line), to see an execution trace for them. This should help locate the offending script.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.