Насколько совместимы штрихи с ksh?
Могу я сделать /bin/sh символическая ссылка на /bin/ksh вместо /bin/dash ничего не нарушая в процессе? Так как они оба должны быть POSIX-совместимыми, могу ли я разумно ожидать, что замена пройдет без проблем?
1 ответ
/bin/sh В течение многих лет он был bash для Ubuntu, а FWIW - это ksh93 в более новых версиях Solaris, поэтому большинство вещей должно работать. Во всяком случае, режимы POSIX в расширенных оболочках, таких как ksh, более либеральны, чем dash, поэтому некоторые новые функции по-прежнему доступны:
~ for shell in dash bash ksh zsh; do ARGV0=sh POSIXLY_CORRECT=1 $shell -c 'echo -n $0 {a,b,c}; [[ -z $POSIXL_CORRECT ]] && echo typo'; done
sh {a,b,c}sh: 1: [[: not found
sh a b ctypo
-n sh a b c
typo
sh {a,b,c}typo
$ for shell in dash bash ksh zsh; do ARGV0=sh $shell -c 'echo -n $0 {a,b,c}; [[ -z $POSIXL_CORRECT ]] && echo typo'; done
sh {a,b,c}sh: 1: [[: not found
sh a b ctypo
sh a b ctypo
sh {a,b,c}typo
Я не думаю, что какой-либо сценарий из пакета в Ubuntu опирается на отсутствие расширения в скобках. Быстрая проверка скриптов в моем /usr/bin не показывает ничего подобного. Есть и другие современные функции, доступные в POSIX-режимах ksh и bash, поэтому трудно предсказать, не запуская сценарии с этими оболочками.
Я не вижу никакой пользы в создании /bin/sh будь кш, хотя.