[英]Bash: Invalidated commands
我的bash shell引起了一個令人擔憂的問題。 我正在編輯bash_profile
並意外導出了一個不完整的命令( export PATH=/usr/local/bin
)。 重新加載終端后,幾乎所有bash命令都無法正常運行。 當我嘗試運行其中任何一個時,錯誤狀態: command not found
。
我該如何解決? 有沒有其他方法可以打開或找到我的bash_profile
?
如果能在此問題上獲得我的直接投入,我將不勝感激。 先感謝您。
如果可以提供目錄名稱, 則 可以執行命令。 幾乎所有基本的Unix命令都在/bin
或/usr/bin
目錄下。 例如, /bin/mv
。
幸運的是,內置命令仍然可以識別。
.bash_profile
將您的.bash_profile
和.bashrc
文件.bash_profile
,然后查看系統默認值。
您可以在命令行上手動編輯PATH
,以:
$ PATH="/bin:/usr/bin"
$ cd
$ mv .bash_profile .bash_profile.bak
$ mv .bashrc .bashrc.bak
$ mv .profile .profile.bak
$ mv .bash_login .bash_login.bak
注意 : 其中某些mv命令可能僅由於該特定文件可能不存在而失敗。
這將使您可以訪問大多數基本的Unix命令。 或者,您可以使用完整目錄名稱指定命令:
$ PATH="/bin:/usr/bin"
$ cd
$ /bin/mv .bash_profile .bash_profile.bak
$ /bin/mv .bashrc .bashrc.bak
$ /bin/mv .profile .profile.bak
$ /bin/mv .bash_login .bash_login.bak
現在,再次登錄,查看默認$PATH
設置為什么。 這是由/etc/profile
。 您可能會發現這很好,然后在啟動腳本中刪除設置PATH
。
PATH
的標准是這樣的:
/usr/share/bin
或/usr/local/bin
這些包含非標准的Unix / Linux命令。 例如,如果在系統上安裝Maven,則mvn
命令通常位於這些目錄之一(可能是符號鏈接)中。 該目錄是存儲在/bin
和/usr/bin
目錄中找不到的命令的地方。 此目錄為第一個目錄,因此您可以將系統隨附的版本替換為較新的版本。 例如,我可能安裝了VIM 6.4,但是我想改用7.3版。 /bin:/usr/bin
-99%的Unix命令所在的標准目錄。 $HOME/bin
這些是您編寫的可執行文件-腳本或二進制文件。 這在PATH列表的末尾,因為它確保您不會意外執行錯誤版本的命令。 想象一下,如果某個小丑編寫了一個名為cp
的shell腳本,它執行/bin/rm
而不是放在您的$HOME/bin
目錄中。 您將看到的其他目錄可能包括/sbin/
和/usr/sbin
,它們是管理員命令( ping
和ifconfig
有時在這些目錄之一中) /opt/bin/X11
(或X11二進制文件存儲的任何位置)。 有時,其他命令也會與您的PATH 混淆 ,例如Perlbrew 。
@fedorqui的評論提供了快速解決方案。
OP還可以使用以下內容快速進入具有$PATH
默認值的shell:
要創建具有原始默認環境的bash
shell :
跑:
/usr/bin/env -i bash --norc
注意:
env
的-i
選項,因此通常不會在結果的shell中設置許多通常設置的環境變量,例如USER
, HOME
和LANG
。
$PATH
值大概是一個硬編碼到bash
本身中的值,但它至少應提供對標准實用程序的訪問。 --norc
禁止~/.bashrc
加載,通常在交互式非登錄 bash shell中默認情況下會發生這種情況( bash
還支持--noprofile
選項以禁止/etc/profile
和~/.bash_profile
加載,但它不支持請在此處應用,因為創建的外殼是非登錄外殼)。 env
在當前shell的$PATH
,則env -i bash --norc
將執行此操作。 env
至少在Linux和FreeBSD / OSX上(可能也在其他平台上)位於/usr/bin/
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.