2017-06-29 82 views
0

我有一個函數,我用它代替cd,並且我有cd別名來調用它。我的問題是,是否可以強制所有函數和腳本通過別名調用我的cd_func,而不是直接調用cdbash:強制函數來調用別名

下面是一個使用ls一個例子,因爲它更簡單:

.myfile

ls_func(){ 
    echo "function called" 
    dir 
} 
alias ls=ls_func 

.notmyfile

ls_func2(){ 
    ls 
} 

需要注意的是.notmyfile是之前採購的這一點很重要.myfile是。我想要的是強制ls_func2直接撥打ls_func而不是ls

回答

2

採購在bash覆蓋它們是相同的功能,所以在這種情況下,源順序並不重要(直到你調用一個函數加載相關功能之前。

爲了使這項工作將其添加到頂部您的腳本:?

shopt -s expand_aliases 

這個命令是用來做走樣工作在非交互式腳本

+0

在'cd_func'的頂部或整個源文件的頂部 – ewok

+1

最好是在頂部的文件,但在創建之前別名也應該是足夠的。 –

+0

所以我遇到了問題。我在源文件的頂部有命令。當我加載一個新的終端時,'ls_func2'不會調用'ls_func'(即它不通過別名)。我必須手動來源我的'.bash_profile'才能使它工作。 – ewok