3

我编写了一个简单的 bash 脚本,它自动为我的 .bashrc 添加一个别名,当它完成时,我希望它获取 .bashrc

到目前为止,它工作正常,例如

./addalias.sh ls 'ls -l' 

正确地将 'alias ls='ls -l' 附加到 .bashrc,但不来源它。

代码如下:

#!/bin/bash
FIRST=$1

SECOND=${2:-cd `pwd`}

echo alias $FIRST="'$SECOND'" >> /home/oscar/.bashrc
echo alias $FIRST="'$SECOND'"

source /home/oscar/.bashrc

这不起作用,也不会运行别名(“sourcebash”)来获取 bash 而不是最后一行。

关于如何解决这个问题的任何想法?

4

3 回答 3

3

运行 'addalias.sh' 的 shell 确实获取了该.bashrc文件;然后它退出。它不会也不会影响父 shell 的环境。

您必须将命令调用为:

source ./addalias.sh ls 'ls --color=auto'

或者:

. ./addalias.sh ls 'ls --color=auto'

现在已修复:而且我不相信,即使在一个问题中,玩弄sudo rm -fr /*是遥不可及的。白痴复制而没有意识到的风险太大了。)

于 2012-07-12T18:28:51.913 回答
1

也许您可以将其设为函数或别名,而不是 bash 脚本。这样做可能会导致更改发生在同一个 shell 中。

于 2012-07-12T18:09:43.243 回答
0

我会创建一个别名来调用这个“addalias”脚本,然后获取新修改的文​​件。

就像是

alias really_add_alias="addalias.sh; . .bashrc"
于 2012-07-12T18:18:00.107 回答