Сценарий оболочки выполнится в Солярисе? в противном случае, который является самым быстрым способом сделать это совместимым

Обычно это делается следующим образом.

Чтобы назначить первичную группу пользователю:

$ usermod -g primarygroupname username

Чтобы назначить вторичные группы пользователю ( -a сохраняет уже существующие вторичные группы нетронутыми, в противном случае они будут удалены):

$ usermod -a -G secondarygroupname username

От человека -страница:

...
-g (primary group assigned to the users)
-G (Other groups the user belongs to)
-a (Add the user to the supplementary group(s))
...
1
24.10.2014, 04:54
2 ответа

Если предположить, что ваш сценарий портативен, т.е. не использует башизмы, GNUisms или что-то еще, отличное от POSIX, он должен работать с большинством ОС Unix и Linux с его #!/bin/sh shebang.

Однако при Solaris 10 и старше, /bin/sh - это не оболочка POSIX, а унаследованная оболочка Bourne, которая предшествовала POSIX, и в которой затем отсутствовали возможности, пришедшие позже со стандартом.

Тогда ваш скрипт, скорее всего, сломается, если оставить его как есть, но это можно легко исправить, установив shebang так, чтобы он указывал на POSIX-совместимый оболочку Solaris:

#!/usr/xpg4/bin/sh

Чтобы убедиться, что вы также выберете POSIX-совместимые утилиты, когда они отличаются от утилит Solaris по умолчанию, вы также должны поставить следующую строку в начале скрипта:

PATH=$(getconf PATH):PATH
2
27.01.2020, 23:52

Да, вы правы.

В Solaris и Linux это отличается, поэтому, если нам нужно написать один скрипт, то мы можем использовать так.

#!/usr/bin/env sh

< Your Code>

Это будет работать.

в Linux.

$which sh
/bin/sh

в Solaris.

$which sh
/usr/bin/sh

Просто чтобы избежать этих путей в одном скрипте мы можем использовать Команда ENV .

-1
27.01.2020, 23:52

Теги

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