来自脚本的源bashrc失败

时间:2012-07-12 18:04:24

标签: bash shell

我写了一个简单的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而不是最后一行。

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

3 个答案:

答案 0 :(得分:3)

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

你必须调用命令:

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

或者:

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

现在已修复:而且我不相信,即使在一个问题中,与sudo rm -fr /*一起玩也是非常明智的。愚蠢的复制和没有意识到的风险太大了。 )

答案 1 :(得分:1)

也许你可以把它变成一个函数或别名而不是一个bash脚本。这样做可能会导致更改发生在同一个shell中。

答案 2 :(得分:0)

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

类似

alias really_add_alias="addalias.sh; . .bashrc"