Когда я захожу на конкретный хост Ubuntu Linux (10.04 64bit) через SSH, я получаю оболочку bash. Отсюда я могу запустить определенный скрипт Python с установленным исполняемым битом, который имеет следующую строку:
#!/usr/bin/env python
Однако, если другой (новый) пользователь входит на тот же хост через SSH и пытается запустить этот (или копию этого) сценария, он получает эту ошибку:
$ ./script.py
: No such file or directory
Оказывается, этот файл на самом деле является файлом с окончанием строки в DOS, но я могу запустить это нормально из своего логина. Если я преобразую его в формат UNIX, то другой человек также сможет нормально его запустить.
Сценарий также отлично работает для нас обоих, если мы добавим префикс «python» независимо от формата DOS / UNIX:
$ python ./script.py
blah blah blah...
В дополнение к этому, как только скрипт преобразуется в формат UNIX и другой пользователь может его запустить, он все равно не запускается из Makefile - make отображает ту же ошибку, что и выше.
Я читал, что / bin / sh - это оболочка 'dash' (не 'bash') в Ubuntu, и мне интересно, имеет ли это какое-то отношение к этому, поскольку он ведет себя иначе, чем bash. Если это так, я хотел бы знать, в чем разница между моим логином (который прекрасно работает и работал годами) и логином этого нового пользователя, который отображает все виды странного поведения. С чего начать искать?
Также возможно актуально - новый пользователь был создан автоматически службой Likewise (клиент интеграции Active Directory), и возможно, что эта служба каким-то образом неправильно настроила нового пользователя.
Я также попытался изменить первую строку на #! / Usr / bin / python без разницы.
Оба пользователя используют оболочку bash в качестве оболочки входа в систему.