Esse não é o shell Bourne, ou bash
emulando o shell Bourne, que é o shell Almquist, no seu caso provavelmente o shell do Debian Almquist (um fork do Linux pelo próprio BSDs baseado no shell original do Almquist).
No shell Almquist (o original e as versões modernas), %
é usado em PATH
para recursos extras específicos para ash
. Citando a documentação:
Path Search
When locating a command, the shell first looks to see if it has a shell function by that name. Then, if PATH does not contain an entry for
%builtin
, it looks for a builtin command by that name. Finally, it searches each entry in PATH in turn for the command.The value of the PATH variable should be a series of entries separated by colons. Each entry consists of a directory name, or a directory name followed by a flag beginning with a percent sign. The current directory should be indicated by an empty directory name. If no percent sign is present, then the entry causes the shell to search for the command in the specified directory. If the flag is
%builtin
then the list of shell builtin commands is searched. If the flag is%func
then the directory is searched for a file which is read as input to the shell. This file should define a function whose name is the name of the command being searched for.Command names containing a slash are simply executed without performing any of the above searches.
Outros shells como ksh
ou zsh
têm um mecanismo de carregamento automático de funções similar, mas usam uma variável diferente ( $FPATH
), mas você não pode definir quais funções ou executáveis têm precedência.
No seu caso, /home/torbjorr/deployed/vector/x86_64-GNU%2fLinux
é interpretado como o diretório /home/torbjorr/deployed/vector/x86_64-GNU
com o sinalizador 2fLinux
. Esse sinalizador é ignorado, pois é desconhecido.
Não há maneira de contornar isso. Mesmo que as cinzas tivessem um mecanismo de escape para que este %
não fosse tratado especialmente, ele não funcionaria em outros shells ou outras coisas que procurassem $PATH
como execvp()
.
Você precisará remover os caracteres %
de $PATH
, para renomear seu diretório ou adicionar um link simbólico.
Ou não use ash
para seu /bin/sh
. Outras implementações de shell POSIX leves que não fazem isso incluem yash
e mksh
.