我写了一个简单的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而不是最后一行。
关于如何解决这个问题的任何想法?
答案 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"