未找到 Bash al(別名 local)函數

未找到 Bash al(別名 local)函數

我可以在目錄本機使用 bash 別名嗎?

給定這樣的目錄結構:

dir1/
  - .
  - ..
  - dir2/
  - file

當我的cd dir1別名eg不起作用時,但當我cd dir1/dir2/這樣的別名起作用時。 alsias 的定義也應該是本地的,位於dir1/dir2/

使用案例: 我是一名程式設計師,我的專案有許多不同的配套工具。我想為其中一些創建別名,但大多數都是項目/目錄具體的。

我看過albash 指令可以完成這個任務,但它不存在於我的 Ubuntu (14.04) 中。

答案1

是的。最簡單的方法是在每個目錄中定義一個文件,其中定義了別名。因此,例如:

$ cat dir1/.alias
alias eg='echo "this is dir1"'
$ cat dir2/.alias
alias eg='echo "this is dir2"'

在上面的範例中,每個目錄都包含一個名為 的文件,.alias其中eg定義了別名。現在,cd進入其中之一,來源文件,且別名可用:

$ cd dir1 && source .alias
$ eg
This is dir1
$ cd ../dir2 && source .alias
$ eg
This is dir2

如果您希望自動完成此操作,請將此行新增至您的~/.bashrc

## Check if an '.alias' file exists and, if it does, source it. 
PROMPT_COMMAND='[ -e .alias ] && source .alias'

PROMPT_COMMAND變數定義在顯示每個提示之前以及執行的任何命令之後執行的命令。這意味著一旦您進入包含檔案的目錄.alias,就會取得該檔案。

筆記

  • 這是不安全的。文件中的任何程式碼.alias都將被執行。使用風險自負。手動方法要安全得多。

  • 在您離開目錄後,檔案中定義的任何別名.alias仍然可用,直到它們被另一個同名的別名定義覆蓋。如果這是一個問題,您可以清除所有別名,然後使用以下命令重新載入全域別名:

    unalias -a && . /etc/bash.bashrc && . ~/.bashrc && . ~/.bash_aliases
    

    為了簡化它,透過將這些行添加到您的~/.bashrc

    clear_aliases(){ 
        unalias -a && . /etc/bash.bashrc && . ~/.bashrc && . ~/.bash_aliases; 
    }
    

    然後您將能夠運行clear_aliases以重置預設值。

相關內容