在bash中使用grepped文件作为包含的源

时间:2010-03-16 07:19:41

标签: bash grep

我在共享的虚拟主机上,我无权在/ect/bashrc编辑全局bash配置文件。遗憾的是,全局文件mesg y中有一行,它将终端置于tty模式,并使scp和类似命令不可用。我的本地~./bashrc包含全局文件作为源,如下所示:

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

我当前的解决方法是使用grep将全局文件(无sans违规行)输出到本地文件中,并使用 作为源。

# Source global definitions
if [ -f /etc/bashrc ]; then
    grep -v mesg /etc/bashrc > ~/.bash_global
    . ~/.bash_global
fi

有没有办法在没有创建实际文件的中间步骤的情况下包含这样的grepped文件?像这样的东西?

. grep -v mesg /etc/bashrc > ~/.bash_global

4 个答案:

答案 0 :(得分:5)

失去了猫,它无用

source <(grep -v "mesg" /etc/bashrc)

<()语法称为process substitution

答案 1 :(得分:2)

. <(grep -v mesg /etc/bashrc)

答案 2 :(得分:1)

我建议致电mesg n:)

答案 3 :(得分:0)

从记忆中,但是像

grep -v mesg /etc/bashrc | eval

应该做的伎俩

由于我不确定eval会读取标准输入,你可能需要将其改写为

eval `grep -v mesg /etc/bashrc`