【发布时间】:2011-05-04 04:22:04
【问题描述】:
当我通过 SSH 登录到特定的 Ubuntu Linux(10.04 64 位)主机时,我得到了一个 bash shell。从这里我可以运行一个特定的 Python 脚本,并设置了可执行位,它的第一行是:
#!/usr/bin/env python
但是,如果另一个(新)用户通过 SSH 登录到同一主机并尝试运行此(或此脚本的副本),他们会收到以下错误:
$ ./script.py
: No such file or directory
原来这个文件实际上是一个 DOS 行结束文件,但我可以从我的登录中运行它。如果我把它转成 UNIX 格式,那么其他人也可以正常运行。
无论 DOS/UNIX 格式如何,如果我们在脚本前面加上“python”前缀,脚本对我们双方都可以正常运行:
$ python ./script.py
blah blah blah...
此外,一旦脚本转换为 UNIX 格式并且其他用户可以运行它,它仍然不能从 Makefile 运行 - make 显示与上述相同的错误。
我读到 /bin/sh 是 Ubuntu 中的“破折号”(不是“bash”)外壳,我想知道这是否与此有关,因为它的行为与 bash 不同。如果是这样,我想知道我的登录名(它工作得非常好并且已经做了多年)和这个新用户的登录名之间有什么区别,它显示了各种奇怪的行为。从哪里开始寻找?
也可能相关 - 新用户是由 Like 服务(一个 Active Directory 集成客户端)自动创建的,该服务可能以某种方式错误地配置了新用户。
我也尝试将第一行更改为 #!/usr/bin/python 没有任何区别。
两个用户都运行 bash shell 作为他们的登录 shell。
【问题讨论】:
-
您是否安装了
/usr/bin/env?/usr/bin/env python是否从命令行运行?此外,shell 的名称是“bash”。 -
@S.Lott:一个的shell被命名为“bash”。 OP 指的是 Ubuntu 系统上的默认提供程序
sh,即 Debian Almquist SHell (dash)。 -
尝试了第三个用户,也是新用户(所以同样创建了一个不同名称的新帐户),这个没有问题。这个问题似乎是第一个新用户的问题。
-
@S.Lott:是的,/usr/bin/env 已安装,并且 /usr/bin/env python 确实从命令行运行。顺便说一句,在 Ubuntu 中有两个常用的 shell - bash 通常是登录 shell,而 dash 通常是 'sh' shell。
-
@meowsqueak:请不要发表评论。请更新您的问题以包含所有事实。
标签: python linux shell ubuntu dos