TinyCore Linux & RVM


7

Tôi đang chạy TinyCore Linux và khi tôi cố gắng cài đặt RVM (cần một bản phân phối linux di động cho QA Tự động hóa), tôi liên tục gặp lỗi sh: syntax error:unexpected redirection.

Tôi không chắc tại sao tôi lại gặp lỗi này vì echo $SHELLlệnh trả về BASH.

Bất kỳ ý tưởng về làm thế nào tôi có thể làm cho điều này làm việc hoặc để biết thêm chi tiết về vấn đề này?


Một số chi tiết hơn về những lệnh bạn đã chạy, khoảng cách chúng nhận được, vv có thể hữu ích.

@karpie Thật không may, đó là theo như tôi đã nhận được khi tôi gõ lệnh: bash << (curl -s rvm.beginrescueend.com/install/rvm )

Câu trả lời:


4

Bản cài đặt Tiny Core Linux của bạn có thể có phần vỏ tối thiểu được cài đặt. Đây có lẽ là busybox . Bạn có thể xác minh điều này bằng cách kiểm tra nếu /bin/shđược liên kết với một thứ khác:

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

Vì Tiny Core Linux tải HĐH tối thiểu vào RAM, nên điều này là mong muốn. Tuy nhiên, nếu bạn cần một trình bao đầy đủ tính năng hơn, bạn có thể cài đặt nó thông qua Trình duyệt ứng dụng (Xem Danh sách các ứng dụng có sẵn tại đây , phiên bản dòng lệnh của trình duyệt ứng dụng là tce-ab). Tiny Core Linux hiện có: bashtcsh.

Để cài đặt bash:

tce-load -wi bash.tcz

Shell mặc định vẫn còn /bin/sh, tuy nhiên bạn có thể sinh ra một bash shell bằng cách chạy bashtừ bên trong nó.

Để đặt tcusershell mặc định:

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

Bạn cũng có thể muốn cài đặt GNU coreutilsnếu bạn đang tìm kiếm nhiều tiện ích tiêu chuẩn GNU hơn để sử dụng trong các tập lệnh bash:

tce-load -wi coreutils.tcz

1

Có vẻ như một trong các tập lệnh đang chạy bên dưới /bin/shnhưng sử dụng các tính năng mở rộng của bash, có thể <<<hoặc <(. Bạn có lẽ có tro như /bin/sh; đó là hợp pháp (và tro nhanh hơn và sử dụng ít bộ nhớ hơn bash, đó là lý do tại sao nhiều bản phân phối không đặt bash như /bin/sh), nhưng đôi khi bạn chạy vào các tập lệnh dựa trên bash chưa bắt đầu #!/bin/sh.

Rằng bạn đã $SHELLđặt bash là không liên quan, mỗi tập lệnh được thực thi bởi trình bao được chỉ định trên dòng đầu tiên ( shebang , ở đây #!/bin/sh). Tôi đã xem nhanh các tập lệnh RVM và có vẻ như tất cả các tập lệnh dựa trên tiện ích mở rộng bash đều bắt đầu chính xác #!/usr/bin/env bash. Bạn có trước đó ~/.rvmkhông? Nếu vậy, hãy thử di chuyển nó ra khỏi đường đi.

Bạn có thể nhận được dấu vết thực thi cho tập lệnh shell bằng cách chạy shell với -xtùy chọn. Vì vậy, chạy bash -x ./rvmvà xem lỗi xảy ra ở đâu. Nếu lỗi xảy ra trong một tập lệnh được gọi gián tiếp từ rvmtập lệnh chính , hãy thử thêm set -xvào các tập lệnh khác (ngay bên dưới #!dòng), để xem dấu vết thực thi cho chúng. Điều này sẽ giúp xác định vị trí các kịch bản vi phạm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.