У меня проблема с вызовом env из терминала. Я использую последнюю версию Ubuntu OS. Вот что происходит:
$ 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
Я проверил, что путь /usr/lib/csv8.1/i3le правильный. Вот права доступа к файлам в этом каталоге:
$ 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
Я не могу понять, почему env не может найти 'sg.ss'. Это проблема с разрешениями? Я знаю, что вам редко следует использовать chmod 777 для файла (здесь я делал это на sg.ss), но я просто хотел посмотреть, сработает ли это. Мне нужно вызывать эту команду в программе Python, а не напрямую через командную строку, но в обоих случаях я получаю одинаковую ошибку, поэтому в качестве примера я использовал терминал.
Любой и все советы приветствуются:)
П.С. Я искал SO по крайней мере 20 минут и не мог найти аналогичный пост. Надеюсь, я не переспрашиваю.
РЕДАКТИРОВАТЬ: пробовал то же самое, но с ./sg.ss вместо просто sg.ss (все еще не работает, та же ошибка :()
Посмотрите на первую строку в файле sg.ss, он, скорее всего, запускает #! / Blah и проверяет, существует ли / blah.
env
будет искать переменную среды PATH для поиска вашей утилиты, так же как и поведение вашей оболочки. Используйте ./
, если вы хотите обратиться к файлу в текущем каталоге, т.е. :
env SCHEMEHEAPDIRS=/usr/lib/csv8.1/i3le ./sg.ss
Текущий каталог не находится в пути поиска, и поскольку sg.ss
не содержит косых черт, он считается именем, которое нужно искать в пути (очень похоже на поведение execl
. env SCHEMEHEAPDIRS=/usr/lib/csv8.1/i3le ./sg.ss
.