"libreadline" 错误妨碍了 bash 脚本?
"libreadline" bugs getting in the way of bash scripts?
我正在尝试使用 shc 将 bash 脚本转换为二进制文件。我像这样放置了一个彩色的帮助页面:
#!/bin/bash
if [ "" = "--help" ]; then
echo -e "\e[0;31m———————————————\e[0m"
echo -e "\e[0;33m Script help \e[0m"
echo -e "\e[0;31m———————————————\e[0m"
echo -e "\e[0;34mOPTIONS\e[0m"
echo -e "\e[1;33m--help\e[0m"
echo -n " "
echo -e "\e[0;33mAccess this help page.\e[0m"
echo -e "\e[0;31m———————————————\e[0m"
exit 0
fi
当我正常测试时,它一直运行良好。但是后来我用 shc -T -f script
将它转换为二进制,现在每隔一次我 运行 ./script.x --help
它都会给我这个错误信息:
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /bin/bash
Reason: no suitable image found. Did find:
/usr/local/opt/readline/lib/libreadline.6.dylib: open() failed with errno=24
Trace/BPT trap: 5
发生了什么事?
好的,所以如果其他人在阅读这篇文章时遇到同样的问题,我找到了解决方案:
sysctl -w kern.maxfiles=65000
显然 OS X 允许 ulimit -n
的替代方案。但首先为什么需要它仍然是个谜...
我正在尝试使用 shc 将 bash 脚本转换为二进制文件。我像这样放置了一个彩色的帮助页面:
#!/bin/bash
if [ "" = "--help" ]; then
echo -e "\e[0;31m———————————————\e[0m"
echo -e "\e[0;33m Script help \e[0m"
echo -e "\e[0;31m———————————————\e[0m"
echo -e "\e[0;34mOPTIONS\e[0m"
echo -e "\e[1;33m--help\e[0m"
echo -n " "
echo -e "\e[0;33mAccess this help page.\e[0m"
echo -e "\e[0;31m———————————————\e[0m"
exit 0
fi
当我正常测试时,它一直运行良好。但是后来我用 shc -T -f script
将它转换为二进制,现在每隔一次我 运行 ./script.x --help
它都会给我这个错误信息:
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /bin/bash
Reason: no suitable image found. Did find:
/usr/local/opt/readline/lib/libreadline.6.dylib: open() failed with errno=24
Trace/BPT trap: 5
发生了什么事?
好的,所以如果其他人在阅读这篇文章时遇到同样的问题,我找到了解决方案:
sysctl -w kern.maxfiles=65000
显然 OS X 允许 ulimit -n
的替代方案。但首先为什么需要它仍然是个谜...