o comando unix env não consegue encontrar o arquivo mesmo que esteja no diretório atual

1

Estou com um problema ao chamar env do terminal. Estou executando o mais recente sistema operacional Ubuntu. Veja o que acontece:

$ ls
disarm.ss  hereis.ss  mat.ss  README  sg.ss  start-test  syntax.ss
$ env SCHEMEHEAPDIRS=/usr/lib/csv8.1/i3le sg.ss
env: sg.ss: No such file or directory

Eu verifiquei que o caminho /usr/lib/csv8.1/i3le está correto. Aqui estão as permissões dos arquivos neste diretório:

$ ls -l
total 60
-rw------- 1 dtdannen dtdannen 17375 2011-03-29 23:05 disarm.ss
-rw------- 1 dtdannen dtdannen  9410 2011-03-29 23:05 hereis.ss
-rw------- 1 dtdannen dtdannen  9955 2011-03-29 23:05 mat.ss
-rw------- 1 dtdannen dtdannen   394 2011-03-29 23:05 README
-rwxrwxrwx 1 dtdannen dtdannen  2801 2011-03-29 23:05 sg.ss
-rwx------ 1 dtdannen dtdannen   137 2011-03-29 23:05 start-test
-rw------- 1 dtdannen dtdannen   678 2011-03-29 23:05 syntax.ss

Não consigo descobrir por que env não consegue encontrar 'sg.ss'. É um problema com permissões? Eu sei que você raramente deveria ou nunca chmod 777 em um arquivo (aqui eu fiz isso no sg.ss), mas eu só queria ver se isso faria funcionar. Eu preciso chamar este comando dentro de um programa python, não diretamente via linha de comando, mas eu recebo o mesmo erro em ambos os casos, então eu usei o terminal como meu exemplo.

Qualquer e todo conselho é apreciado:)

P.S. Eu procurei por pelo menos 20 minutos e não consegui encontrar um post semelhante. Espero não estar perguntando novamente.

EDIT: Tentei a mesma coisa, mas com ./sg.ss em vez de apenas sg.ss (ainda não funcionou, mesmo erro :()

    
por Dustin 30.03.2011 / 07:04

3 respostas

2

Veja a primeira linha no arquivo sg.ss é mais provável que comece com #! / blah verifique se / blah existe.

    
por Angelom 30.03.2011 / 12:43
1

env pesquisará a variável de ambiente PATH para pesquisar seu utilitário, assim como o comportamento nativo do seu shell. Use ./ se você quiser se referir ao arquivo no diretório atual, por exemplo:

env SCHEMEHEAPDIRS=/usr/lib/csv8.1/i3le ./sg.ss
    
por yan 30.03.2011 / 07:07
1

O diretório atual não está no caminho de pesquisa e, como sg.ss não contém barras, ele é considerado um nome para procurar no caminho (muito parecido com o comportamento de execl . Você deseja env SCHEMEHEAPDIRS=/usr/lib/csv8.1/i3le ./sg.ss .

    
por hobbs 30.03.2011 / 07:08