首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抑制警告“不安全的世界可写dir /dir/dir/”

抑制警告“不安全的世界可写dir /dir/dir/”
EN

Stack Overflow用户
提问于 2021-01-11 23:33:02
回答 1查看 395关注 0票数 0

我已经将当前目录添加到我的$PATH (PATH="$PATH":.)中,以便更容易地在当前文件夹中运行shell脚本。

现在,在执行shell命令之前,我经常看到以下输出:

代码语言:javascript
复制
❯ cd Sites/project-a

❯ colorls

# /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/universal-darwin20/rbconfig.rb:229:
# warning: Insecure world writable dir /Users/philipp/Sites/project-a in PATH, mode 040777
#
# ... output of the colorls command ...

(colorls是一个红宝石,我用它代替ls,但我也在许多脚本中使用其他宝石)

我知道它的意义和原因,但我不想要一个红宝石脚本来决定我应该如何配置我的本地系统。

是否有一种方法可以在不更改目录权限的情况下抑制警告?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-12 12:25:42

我无法找到一种全局禁用“不安全的世界可写dir”警告的方法。

Another answer建议用shell脚本替换ruby可执行文件,或者用不同的选项重新编译ruby。在我看来,这两种选择都很困难,并可能导致其他意想不到的问题。

但是,我找到了一种方法来禁用单个脚本/宝石的警告:

在我的例子中,我使用gem colorls来生成一个更好的ls输出。到目前为止,这个创业板是唯一一个经常触发警告。我通过在我的.zshrc文件(或.bash_profile)中添加以下别名来解决这个问题

解决方案1

代码语言:javascript
复制
# Inside .zshrc

alias colorls='colorls --color=always 2>/dev/null'

重要的部分是误差重定向2>/dev/null

很好:这个别名允许我向命令中添加自定义参数,比如colorls --report

Bad:这个别名将掩盖命令产生的任何错误或警告。我想特别删除“不安全的世界可写的dir”警告。

解决方案2

代码语言:javascript
复制
# Inside .zshrc

alias colorls='colorls --color=always 2>&1 | grep "warning: Insecure world writable dir" -v'

Good:没有将所有错误重定向到/dev/null,而是第二次尝试将所有输出重定向到grep,它删除了单独的警告消息。

坏消息:该解决方案不识别任何colorls参数;任何参数都将传递给grep而不是colorls

解决方案3(最佳)

代码语言:javascript
复制
# Inside .zshrc

colorls() {
    /usr/bin/colorls --color=always $@ 2>&1 | grep "warning: Insecure world writable dir" -v
}

这是最好的解决方案:我们用一个shell函数替换colorls二进制文件。该shell函数调用二进制文件。$@变量将所有参数传递给二进制文件,而grep则从输出中删除特定的警告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65676001

复制
相关文章

相似问题

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