Как совместимый тире с ksh?

Я могу сделать /bin/sh symlinked к /bin/ksh вместо /bin/dash ничего не повреждая в процессе? Так как они, как оба предполагается, совместимы POSIX, я могу обоснованно ожидать, что замена обойдется без помощи проблем?

1
задан 24 October 2017 в 10:54

1 ответ

/bin/sh если бы удар были в течение многих лет на Ubuntu и FWIW, это - ksh93 на более новых версиях Соляриса, то таким образом, большинство вещей должно работать. В любом случае режимы POSIX на усовершенствованных оболочках как ksh более либеральны, чем тире, таким образом, некоторые новые возможности все еще доступны:

~ 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 и удара, таким образом, трудно предсказать, на самом деле не запуская скрипты с теми оболочками.

Я не вижу преимущества для создания /bin/sh будьте ksh, все же.

1
ответ дан 7 December 2019 в 15:28

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

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