每当我尝试在主目录下编译的 Zsh shell 下运行 screen 时,都会收到以下错误:
> screen
Cannot exec '/my/path/to/zsh/bin/zsh'
Z shell 功能完美,并且我已经验证,如果我使用系统 shell(例如csh
)调用它,我可以运行 screen。我通常会遇到zsh
:exec zsh
。以下是有关我的系统的一些附加信息:
> echo $SHELL
/my/path/to/zsh/bin/zsh
> echo $ZSH_VERSION
5.0.0
> which screen
/usr/bin/screen
> screen --version
Screen version 4.00.03 (FAU) 23-Oct
我的.screenrc
只有两行:
escape ^A^A
bind o other
如果重要的话:/my/path/to/zsh/
象征性地指我的主目录下的路径。
更新
调用的输出
file
:> file /my/path/to/zsh/bin/zsh > /~/sw/zsh/bin/zsh: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for > GNU/Linux 2.6.9, dynamically linked (uses shared libs), > for GNU/Linux 2.6.9, stripped
但是我能成功运行并从我的shell
/my/path/to/zsh/bin/zsh
进入。我通常切换到 zshzsh
csh
exec /my/path/to/zsh/bin/zsh
以下是
ls
有关的详细信息/my/path/to/zsh/bin/zsh
-rwxr-xr-x 2 YYYY ZZZZ 651K Jan 3 11:58 zsh*
Mi
.login
为空(只有评论)- 我没有
.profile
文件 cat/etc/*-release
:Scientific Linux SL release 5.1 (Boron)
关于可能导致此问题的原因以及如何使屏幕与我的本地安装一起工作有什么想法zsh
吗?
答案1
一个可能的原因是它screen
具有特权(在某些系统上,它是 setgid utmp
,能够将终端所有权记录到utmp
文件),并且此 zsh 二进制文件需要一个不在默认库路径中的库。调用 setuid 或 setgid 程序会删除一些环境变量,特别是LD_LIBRARY_PATH
.
如果您可以从外部屏幕执行但不能从内部执行,并且您在 中/my/path/to/zsh/bin/zsh
进行设置,则可以解释您的症状。LD_LIBRARY_PATH
.profile
答案2
这很尴尬:我的变量的值$SHELL
不正确(有一个拼写错误)。我道歉 - 在发布这样的问题并浪费每个人的时间之前,我会确保我三次检查这些事情。非常感谢大家的帮助。