2015-08-14 89 views
1

我無法使用ls,bash ..任何在更改路徑後都非常關鍵的流行命令。 我不確定它之前是什麼(因爲我不能做vi命令)。 我跑了第一個命令,並意識到第一個有一個錯字 - 不是PATH,但我輸入了PATh。 於是我馬上跑到下一個:Bash命令在更改後無法使用路徑變量

export PATH="/usr/local/bin:$PATh" 
export PATH="/usr/local/bin:$PATH" 

然後VI,LS的bash命令開始到不行。

我沒有迴應$ PATH來查看PATH。

usr/local/bin:/usr/local/bin:/usr/local/bin:/usr/local/bin: 

這就是我得到的。任何幫助表示讚賞。

+2

'PATH = $(getconf PATH)' – 123

+1

如果你實際上並沒有編輯任何文件,改變只是局部於當前shell會話。只需註銷並啓動一個新的shell。 – chepner

回答

-2

當你做export PATH="/usr/local/bin:$PATH"的時候,你是說把PATH設置爲/ usr/local/bin:加上PATH變量之前的任何東西。這基本上將字符串「/ usr/local/bin:」與舊路徑連接起來。這就是爲什麼你的PATH重複這麼多,你必須幾次運行這個命令。

試試運行這個:export PATH="/usr/local/bin"

+0

正如他們在問題中提到的那樣,他們遇到的問題是在重新分配PATH導致它們失去原始路徑時出現錯字。所以你所談論的可能會發揮作用,但並不是真正的問題。 –

+0

我的不好,沒有仔細閱讀這個問題。 –

0

1>嘗試從當前會話 加載默認的.profile腳本

$ /bin/bash ./.profile 

2>只需註銷並重新登錄它。

0

您應該可以通過source /etc/profile來重置您的PATH變量,儘管它可能會在您配置的其他一些變量上跳過。你也可以從grep中選擇相應的行來設置PATH並在當前環境中重做

此外,您可以隨時指定在此期間需要的可執行文件的完整路徑。例如,如果你想在當前狀態下使用grep與PATH你可以使用/bin/grep(或者/usr/bin/grep這取決於你的系統),因爲

0

看來你有「破」你的bash shell〜/ .bash_profile中的腳本,錯字PATh。 (該問題明確指出bash,所以我在這種情況下回答。)

由於PATH是「斷開」的,您將需要使用其完全限定的路徑訪問您的編輯器。

/usr/bin/vi ~/.bash_profile 

這應該讓你修復PAThPATH

如果你發現你需要編輯你的PATH環境變量很多,這個小小的bash函數可能會有所幫助。

vipath() { 
    local tmpfile=$(mktemp /tmp/vipath-edit.XXXXXX) 
    echo "$PATH" | tr ':' '\n' > "$tmpfile" 
    vi "$tmpfile" && PATH=$(paste -s -d ':' "$tmpfile") 
    rm "$tmpfile" 
} 

注意:有更好的方法來確保$ tmpfile被刪除,我沒有在這段代碼中使用。而在多用戶系統中,有更好的方法來確保臨時文件不在共享位置。

如果要將目錄位置添加到PATH中,而不添加重複的位置,這個小小的bash函數可以用於預先設置目錄位置。

pathadd() { 
    if [ -d "$1" ] && [[ ! ":$PATH:" =~ ":$1:" ]] 
    then 
    PATH="$1:$PATH" 
    fi 
}