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