Я скачал пакет open-source и make
. Но при запуске скрипта admin
возникает ошибка. Я нашел, что это была какая-то проблема с path
.Но есть еще проблема, которая меня смущает:
#! /bin/bash
# ionadmin - temporary wrapper script for .libs/ionadmin
# Generated by libtool (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
#
# The ionadmin program cannot be directly executed until all the libtool
# libraries that it depends on are installed.
#
# This wrapper script should never be moved out of the build directory.
# If it is, it will not operate correctly.
# Sed substitution that helps us do robust quoting. It backslashifies
# metacharacters that are still active within double-quoted strings.
sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
emulate sh
NULLCMD=:
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
sed_quote_subst
: какое значение он имеет? из-за существующего ''
,
некоторые мета в ''
отключены. Но я не знаю, какие именно. #!/bin/bash
& zsh emulate: Первая строка декларирует, что этот скрипт выполняется в bash. Так почему же есть emulate, который от zsh?alias -g '${1+"$@"}'='"$@"'
: Я только что ввел это в другой bash и получил ошибку: -g :invalid option
, Я запутался в разнице между zsh и bash, и как они работают вместе. Не могли бы вы объяснить мне это, пожалуйста?Я новичок в этом деле, поэтому этот вопрос может быть не так уж "полезен" для вас. Но ваш ответ может помочь мне лучше понять этот мир.
#!/bin/bash
& zsh подражают: первая линия объявляет, что этот сценарий бежит в ударе. Так, почему есть подражание, которое является от zsh?
первая линия, хижина, только указывает, что, если бы сценарий выполнен непосредственно, им управляли бы, используя удар. Ничто не препятствует тому, чтобы Вы управляли им, используя zsh:
zsh admin.sh
я не знаю, почему автор думал, чтобы проверить на zsh, но они сделали. Этот раздел кодекса для zsh и не будет бежать в ударе:
emulate sh
NULLCMD=:
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
alias -g '${1+"$@"}'='"$@"'
: Я просто ввел это на другом ударе и получаю ошибку:-g :invalid option
, я смущен различием zsh & удар, и как они сотрудничают. Вы могли объяснить это мне, пожалуйста?
Это - очень широкий вопрос. Я не объясню, что все различия zsh и удара - идут, читает документацию обоих для этого. Для отдельного момента alias -g
, zsh имеет глобальный псевдонимы. В ударе псевдонимами только заменяют в начале линии. В zsh, alias -g
определяет глобальные псевдонимы, которыми заменяют везде в линии.
Так, в zsh, если я делаю:
alias -g foo=bar
И затем бегите:
echo foo
продукция будет:
bar
Ваши вопросы испытывают недостаток в информации, но я попытаюсь ответить на это как это:
sed regexp демистифицируют
s/\([`"$\\]\)/\\\1/g'
^ ^ ^----------------- with The character with a leading \
|
| | --- the characters `"$\
|
|-- replace
, Таким образом "
становится \"
, я понятия не имею, zsh не моя чашка чая, когда Вы управляете сценариями.
Тест, если заявления как это:
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
echo "Does the if statement run in my shell?";
else
echo "The else statement runs in my shell";
fi