我可以在目錄本機使用 bash 別名嗎?
給定這樣的目錄結構:
dir1/
- .
- ..
- dir2/
- file
當我的cd dir1
別名eg
不起作用時,但當我cd dir1/dir2/
這樣的別名起作用時。 alsias 的定義也應該是本地的,位於dir1/dir2/
使用案例: 我是一名程式設計師,我的專案有許多不同的配套工具。我想為其中一些創建別名,但大多數都是項目/目錄具體的。
我看過al
bash 指令可以完成這個任務,但它不存在於我的 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
以重置預設值。