Baixei um pacote de código aberto e o make
. Mas o erro acontece quando executo o admin
script tentando começar. Descobri que havia algum problema com o path
.Mas ainda há algum problema que me confundiu:
#! /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
: que valor isso tem? devido à existência de''
, alguns meta-in''
estão desativados. Mas não sei quais são eles.#!/bin/bash
& zsh emulate: A primeira linha declara que este script está sendo executado no bash. Então, por que existe uma emulação, que é do zsh?alias -g '${1+"$@"}'='"$@"'
: Acabei de inserir isso em outro bash e recebo o erro:-g :invalid option
estou confuso sobre a diferença entre zsh e bash e como eles funcionam juntos. Você poderia me explicar, por favor?
Eu sou um novato nisso, então esta pergunta pode não ser tão "útil" para você. Mas sua resposta pode me ajudar a entender melhor este mundo.
Responder1
#!/bin/bash
& zsh emulate: A primeira linha declara que este script está sendo executado no bash. Então, por que existe uma emulação, que é do zsh?
A primeira linha, o shebang, indica apenas que se o script for executado diretamente, ele será executado usando bash. Nada impede que você execute-o usando zsh:
zsh admin.sh
Não sei por que o autor pensou em testar o zsh, mas o fez. Esta seção do código é para zsh e não será executada no bash:
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+"$@"}'='"$@"'
: Acabei de inserir isso em outro bash e recebo o erro:-g :invalid option
estou confuso sobre a diferença entre zsh e bash e como eles funcionam juntos. Você poderia me explicar, por favor?
Essa é uma questão muito ampla. Não vou explicar todas as diferenças entre zsh e bash - leia a documentação de ambos para isso. Para o ponto específico de alias -g
, zsh temglobalapelido. No bash, os aliases são substituídos apenas no início da linha. No zsh, alias -g
define aliases globais que são substituídos em qualquer lugar da linha.
Então, em zsh, se eu fizer:
alias -g foo=bar
E então execute:
echo foo
A saída será:
bar
Responder2
Suas perguntas carecem de informações, mas tentarei respondê-las assim:
sed regexp desmistificar
s/\([`"$\\]\)/\\\1/g' ^ ^ ^----------------- with The character with a leading \ | | | --- the characters `"$\ | |-- replace
Assim
"
se torna\"
Não tenho ideia, zsh não é minha preferência quando você está executando scripts.
Teste se declarações como esta:
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