簡體   English   中英

Bash:無效的命令

[英]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 ,它們是管理員命令( pingifconfig有時在這些目錄之一中) /opt/bin/X11 (或X11二進制文件存儲的任何位置)。 有時,其他命令也會與您的PATH 混淆 ,例如Perlbrew

@fedorqui的評論提供了快速解決方案。

OP還可以使用以下內容快速進入具有$PATH默認值的shell:

創建具有原始默認環境的bash shell

  • 無需運行配置文件/初始化腳本
  • 而不繼承當前shell的任何環境變量

跑:

 /usr/bin/env -i bash --norc

注意:

  • 由於使用了env-i選項,因此通常不會在結果的shell中設置許多通常設置的環境變量,例如USERHOMELANG
    • 同樣,您將獲得的$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM