.bash_profile 中的別名不起作用

.bash_profile 中的別名不起作用

我在 .bash_login 中添加了一些 cd blah blah 命令作為別名,以便於更改目錄。會停止工作。

抱歉,我其實是想寫 .bash_login

答案1

不導出別名。也就是說,在一個 shell 中定義的別名不是任何子 shell 繼承的環境的一部分。因此,定義別名的最佳位置是在 ~/.bashrc 中,而不是在 ~/.bash_profile 或 ~/.profile 中,因為第一個將由任何互動式 shell 獲取,而後兩個將僅由登入 shell 取得。

答案2

使用aliasshell 中的命令確認它們是否已真正建立。另外,您只是使用 Mac Terminal.app 程式嗎?選項中的某個位置應該有一個設置,您可以將其配置為使用所謂的登入 shell。這就是 .bash_profile 檔案的來源方式。

答案3

您的 shell 在啟動時可能不會讀取檔案 .bash_profile。許多發行版的預設 .bashrc 中都有類似的內容:

if [ -f ~/.bash_profile ]; then
        . ~/.bash_profile
fi

如果您僅使用別名,我建議您將檔案命名為 ~/.bash_aliases:

if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
fi

它所做的只是檢查檔案是否存在,如果存在,則執行其中的命令。在您的情況下,別名命令。將其放入您的 .bashrc 中,您的問題應該得到解決。

編輯:實際上比這更複雜一點。我的解決方案可行,但這值得一讀.bash_profile 與 .bashrc

PS 修復 *nix 系統上的問題很少需要重新啟動。最多登出和登入一次。

答案4

如果您想要做的是使更改目錄變得更容易,請查看$CDPATH

CDPATH The search path for the cd command.  This is a colon-separated list of
       directories in  which  the shell looks for destination directories
       specified by the cd command. A sample value is ".:~:/usr".

使用上面的範例,將以下內容新增到您的個人資料中:

CDPATH=.:~:/usr

然後,無論您在哪個目錄中,您都可以輕鬆存取~或的子目錄/usr

$ pwd
/var/log
$ cd bin
$ pwd
/usr/bin

相關內容