2016-08-02 70 views
-1

當bash終端啓動時,我希望它自動設置一些別名,但由於某些原因,它們無法正常工作。如何在bash啓動時自動設置別名?

我有一個名爲.bash_aliases一個bash腳本,並在我的.bashrc文件我有以下代碼:

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

文件.bash_aliases中我有:

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

現在,當我啓動終端,我看到:

bash_aliases file is here 
creating alias for baaa 

但是當我試試co命令:

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

標點符號很重要。要添加的別名,你需要腳本定義它們,在當前的shell執行它們:

# 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 

...它作爲單獨的腳本運行,並且阿里當腳本退出時,Ases被遺忘。


順便說一句 - 因爲採購的腳本讀取它到當前的外殼,而不是執行它作爲一個單獨的程序,這意味着它不需要文件權限設置爲可執行。因此,您的.bash_aliases不需要也不應該具有+x權限。

相關問題