我在 .bash_login 中添加了一些 cd blah blah 命令作為別名,以便於更改目錄。會停止工作。
抱歉,我其實是想寫 .bash_login
答案1
不導出別名。也就是說,在一個 shell 中定義的別名不是任何子 shell 繼承的環境的一部分。因此,定義別名的最佳位置是在 ~/.bashrc 中,而不是在 ~/.bash_profile 或 ~/.profile 中,因為第一個將由任何互動式 shell 獲取,而後兩個將僅由登入 shell 取得。
答案2
使用alias
shell 中的命令確認它們是否已真正建立。另外,您只是使用 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