首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OSX10.9小牛上安装bash 4.2的正确方法,而不需要“中止陷阱: 6”和分段错误

在OSX10.9小牛上安装bash 4.2的正确方法,而不需要“中止陷阱: 6”和分段错误
EN

Stack Overflow用户
提问于 2013-10-28 18:10:44
回答 2查看 3.3K关注 0票数 4

我试图安装bash4.2的源代码(不是自制的)。它有点运行,有点失败。当我将它作为默认的登录shell时,我可以运行许多命令,但通常是一些基本命令,比如cd /System杀死shell。

我下载了主更新的tarball,我基本上安装了它,相当于:

代码语言:javascript
复制
./configure && make && sudo make install
sudo ln -s /usr/local/bin/bash /bin/bash4
sudo bash -c "echo /bin/bash4 >> /private/etc/shells"
chsh -s /usr/local/bin/bash # A

...and我还访问了System、->用户和组-> (me) ->高级选项,并将默认的shell更改为/bin/bash4 4。

Homebrew似乎安装了读行,并且要求它,同时在环境中为-DSSH_SOURCE_BASHRC添加一个额外的标志(这对我正在做的事情来说应该不是问题)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-29 12:48:41

解决办法:在PS1中将\w更改为\W。

票数 2
EN

Stack Overflow用户

发布于 2013-11-03 00:32:09

当t_string不以$HOME开头时,问题似乎在于这一行。(parse.y:5278)

代码语言:javascript
复制
  strcpy (t_string, polite_directory_format (t_string));

快速而肮脏的解决办法:

代码语言:javascript
复制
diff --git i/general.c w/general.c
index 491a7ea267ab..ec9b6271015d 100644
--- i/general.c
+++ w/general.c
@@ -700,10 +700,11 @@ polite_directory_format (name)
       strncpy (tdir + 1, name + l, sizeof(tdir) - 2);
       tdir[0] = '~';
       tdir[sizeof(tdir) - 1] = '\0';
-      return (tdir);
     }
   else
-    return (name);
+    strcpy (tdir, name);
+
+  return (tdir);
 }

 /* Trim NAME.  If NAME begins with `~/', skip over tilde prefix.  Trim to

它归结为这个测试用例,它与gcc一起编译和运行,但是使用clang/llvm失败:

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

char *foo(char *buf) {
  return(buf);
}

int main(int argc, char *argv[]) {
  char buf[1024];

  strcpy(buf, "buffer");

  strcpy(buf, foo(buf));
  printf("%s\n", buf);
}

代码语言:javascript
复制
> gcc -o test test.c
> ./test
buffer
> cc -o test test.c
> ./test
Abort trap: 6
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19642059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档