我试图安装bash4.2的源代码(不是自制的)。它有点运行,有点失败。当我将它作为默认的登录shell时,我可以运行许多命令,但通常是一些基本命令,比如cd /System杀死shell。
我下载了主更新的tarball,我基本上安装了它,相当于:
./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添加一个额外的标志(这对我正在做的事情来说应该不是问题)。
发布于 2013-10-29 12:48:41
解决办法:在PS1中将\w更改为\W。
发布于 2013-11-03 00:32:09
当t_string不以$HOME开头时,问题似乎在于这一行。(parse.y:5278)
strcpy (t_string, polite_directory_format (t_string));快速而肮脏的解决办法:
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失败:
#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);
}。
> gcc -o test test.c
> ./test
buffer
> cc -o test test.c
> ./test
Abort trap: 6https://stackoverflow.com/questions/19642059
复制相似问题