【问题标题】:What start up scripts are executed when a terminal(shell) is opened in Ubuntu [closed]在Ubuntu中打开终端(shell)时执行哪些启动脚本[关闭]
【发布时间】:2011-09-05 08:52:57
【问题描述】:

当我打开一个终端时,它说无法执行二进制文件,输出是这样的:

bash: /home/sandeep/bin/uname: cannot execute binary file

bash: [: =: unary operator expected

bash: /home/sandeep/bin/sed: cannot execute binary file

bash: /home/sandeep/bin/ls: cannot execute binary file

接下来是正常提示,一切都很好。但是作为一个程序员,每次打开终端都会看到这么多错误是很烦人的。

我发现的原因是,当我安装 armeabi 工具链时,它在主目录中创建了一个名为 bin 的文件夹,并且该目录中的所有可执行文件都用于 arm 处理器。但是我的终端在打开时正在尝试执行这些 arm 二进制文件,因此显示无法执行这些二进制文件的错误(因为我的 proc 不是 arm)

为了解决这个问题,我可以删除这个文件夹(我试过了,效果很好),但这不是最佳解决方案。我想知道当我打开一个终端尝试在启动时执行错误的二进制文件时正在执行的脚本。

我查看了 .bashrc,但与我的问题无关。

【问题讨论】:

  • 我想它属于askubuntu.com(我在建议地点的“标记为离题”列表中没有看到这个选项)

标签: linux shell scripting terminal


【解决方案1】:

我会用 strace 调试它

strace -e trace=open,read bash > output.txt

然后你可以检查调用 bash 时打开了哪些文件

【讨论】:

  • +1 解决方案。嗨,克里斯,感谢您的回答。你能解释一下指令吗?这真的很有帮助..
  • 嗨。 strace 命令跟踪任何特定命令的系统调用。使用 open,read 它基本上显示了在运行命令“bash”时打开或读取了哪些文件(您可以使用任何其他命令而不是 bash)。这样您就可以调试打开新会话时调用的文件。您应该看到一些正在读取的 bashrc 以及您在这些文件中调用的脚本。希望对您有所帮助。
【解决方案2】:

从 $PATH 环境变量中删除 /home/sandeep/bin。

【讨论】:

  • 或者移到最后一件事。每当我设置PATH 时,我总是设置export PATH=$PATH:/new/dir/bin
猜你喜欢
  • 2013-03-31
  • 2015-07-04
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 2020-05-14
  • 2022-01-19
相关资源
最近更新 更多