Как эмулировать удаленную среду оболочки хоста на моей рабочей станции ubuntu 16.04 LTS

На моем настольном хосте человечности, если я запускаю скрипт только со строкой

echo $SHELL

это печатает

/bin/bash

Но на другом хосте, работающем busybox, если я делаю то же самое, я добираюсь

/bin/sh

печатный

И я заметил, что, если я создаю сценарии на своем поле человечности и выполняю их на хосте busybox затем иногда, я получаю другое поведение.

То, что я хотел бы сделать, создают ярлык на моем рабочем столе человечности к некоторому терминальному сеансу, который выполнил бы Оболочку Bourne,/bin/sh, а не Границу Снова Shell, удар. Это возможно или является моими взглядами об этой несправедливости?

0
задан 15 October 2018 в 03:57

1 ответ

В первую очередь, необходимо читать о POSIX и различных реализациях оболочки. Затем при необходимости в мобильности попытайтесь записать сценарии, максимально совместимые POSIX.


Для тестирования Ваших сценариев для работы с busybox можно установить и выполнить busybox оболочку по умолчанию ash проверять Ваш синтаксис сценариев для работы с busybox:

sudo apt install ash
ash
# non-posix function declaration (works in bash, but not in ash)
$ function test(){ echo Hello World; }
ash: 1: Syntax error: "(" unexpected
# posix-compliant function declaration (works in ash and bash)
$ test(){ echo Hello World; }
$ test
Hello World

Но это не могло бы быть достаточно, поскольку это будет все еще использовать версию GNU инструментов по умолчанию и имеет все Ваши другие установленные программы, которые, вероятно, не установлены с Вашим busybox.

ash
$ grep --version
grep (GNU grep) 2.25

Если у Вас есть докер, можно выполнить a busybox контейнер только с его инструментами по умолчанию:

docker run -it --rm busybox
$ grep --version
grep: unrecognized option `--version'
BusyBox v1.29.3 (2018-10-01 22:37:18 UTC) multi-call binary.
0
ответ дан 27 October 2019 в 08:03

Другие вопросы по тегам:

Похожие вопросы: