2016-08-02 7 views
-1

bash端末が起動するときに、いくつかのエイリアスを自動的に設定したいのですが、何らかの理由で正しく動作しません。bashがCentOSで起動するときにエイリアスを自動的に設定する方法は?

私は.bash_aliasesと呼ばれるbashスクリプトを持っている、と私.bashrcファイルで、私は次のコードを持っている:ファイル.bash_aliases

if [ -f .bash_aliases ]; then 
     echo "bash_aliases file is here" 
     ./.bash_aliases 
fi 

を私は持っている:

"creating alias for baaa" 
alias baaa='echo "baaa"' 

、私が起動したとき端末:私は参照してください:

bash_aliases file is here 
creating alias for baaa 

私は、 mmand:

baaa 

これは表示されますか?

bash: baaa: command not found... 

どのように意味がありますか?しかし 、私は端末から行う、期待されている

[<>@<> ~]$ alias baaa='echo "baaa"' 
[<>@<> ~]$ baaa 
baaa 

.bash_aliasesファイルにエイリアスを設定できないのはなぜですか?ファイルが実行可能であることを確認しました:sudo chmod 777 .bash_aliases

私はCentOSの7

+0

'source'コマンドは何をしていますか? '.'は' source'コマンドのエイリアスです。 –

+1

ファイルを実行可能にする必要は全くありません。 (そして、** chmod 777'を使用しないでください。これは、システム上のすべてのアカウントに書き込みを行います;これには、 - 特に、 - 信頼されていない認証コードをサンドボックス化するために使用される 'nobody'などの匿名アカウントが含まれます)。 –

+0

ファイルとフォルダに必要なだけのDAC権限を許可します。 777はトラブルを招いている。 [\ [this \]](http://www.tldp.org/LDP/intro-linux/html/sect_03_04.html)を参照してください。 – sjsam

答えて

3

句読点の問題を使用しています。エイリアスを追加するために、あなたはあなたの現在のシェルでそれらを実行し、ソーススクリプト、それらを定義する必要があります...

# WORKS: source file named bash_aliases in the current directory 
. ./.bash_aliases  # POSIX-compliant syntax 

...とも書かれ

# WORKS: source file named bash_aliases in the current directory 
source ./.bash_aliases # bash-only syntax 

代わりに次のようにすると:

# BROKEN: Run .bash_aliases as subprocess 
./.bash_aliases 

...別のスクリプトとして実行され、aliそのスクリプトが終了すると、asesは忘れ去られます。ところで


- スクリプトを調達するので、むしろ別個のプログラムとして実行するよりも、現在のシェルにそれを読み出しこれは、それが実行するファイルのアクセス許可を必要としないことを意味します。したがって、.bash_aliasesには、+xのアクセス権が必要でなくてもよい。

関連する問題