3

.bashrcにエイリアスを自動的に追加する簡単なbashスクリプトを作成しました。それが終了したら、.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'を実行するシェルは、.bashrcファイルをソースします。その後、終了します。親シェルの環境には影響を与えませんし、影響を与えることもできません。

次のようにコマンドを呼び出す必要があります。

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

または:

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

現在修正されています:そして、質問であっても、遊んでいることsudo rm -fr /*がリモートで賢明であるとは確信していません。ばかコピーして気付かないリスクが多すぎます。)

于 2012-07-12T18:28:51.913 に答える
1

たぶん、bashスクリプトの代わりに関数またはエイリアスにすることができます。これを行うと、同じシェルで変更が発生する可能性があります。

于 2012-07-12T18:09:43.243 に答える
0

この「addalias」スクリプトを呼び出すエイリアスを作成してから、新しく変更されたファイルをソースします。

何かのようなもの

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