Su shell ve Google\\ Drive
y lo analiza como Google
, seguido de una barra invertida literal,un espacio (que separa los argumentos a scp
, seguido de Drive
, y luego pasa eso a SCP, que no sabe qué hacer ahora que le está enviando demasiados argumentos.
Para hacer esto más claro, compare cómo el shell analiza Google\ Drive
yGoogle\\ Drive
:
$ cat 443236.sh
#!/bin/bash
foo=(Google\ Drive)
echo "Unrolling \$foo[@]:"
for f in "${foo[@]}"; do
echo "'$f'"
done
foo=(Google\\ Drive)
echo "Unrolling \$foo[@]:"
for f in "${foo[@]}"; do
echo "'$f'"
done
$./443236.sh
Unrolling $foo[@]:
'Google Drive'
Unrolling $foo[@]:
'Google\'
'Drive'
Я решил свою проблему. Я добавил эту строку в.bashrc:
export EXECIGNORE=*/telepathy-gabble-xmpp-console
Такой подход не сработал:
export EXECIGNORE=$(which telepathy-gabble-xmpp-console)
Поскольку telepathy-gabble-xmpp-console
установлен как в /bin
, так и в /usr/bin
.
Однако небольшая модификация работает, используяwhich -a
:
export EXECIGNORE=$(which -a telepathy-gabble-xmpp-console | tr '\n' ':' | head -c -1)