Shell

$PATH 環境變數似乎無法辨識

  • September 7, 2014

我已經全新安裝了 Debian Wheezy,並在其中安裝了 zsh。幾天后,我完成了 TeX Live 2014 的 vanilla 安裝,因此我將必要的二進制路徑添加到了我的 $PATH。現在我開始編寫小腳本,所以我想把它們放在容易訪問的地方,即~/bin.

我的路徑如下所示:

~/bin:/opt/texbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

現在,如果我想從 TeX Live 執行某些東西,這很簡單:

% which pdflatex
/opt/texbin/pdflatex

沒問題。但是當我嘗試從~/bin…執行某些東西時

% which hello_world
hello_world not found

所以我仔細檢查了:

% ls -l ~/bin
total 18
-rwxr-xr-x 1 bozbalci bozbalci 5382 Sep  8 00:28 hello_world

它表明 hello_world 在~/bin執行權限設置方面做得很好。我試過rehash了,但是沒有用。幫助?

在 shell 命令中

PATH=~/bin:/opt/texbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

執行 shell 命令時,波浪號會擴展到您的主目錄。因此, 的結果值PATH類似於/home/theconjuring/bin:/opt/texbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

確保波浪號不在引號 ( PATH="~/bin:…") 內,否則它代表自己。要將目錄添加到 的目前值PATH,您可以使用

PATH=~/bin:$PATH

通常,在 zsh 以外的 shell 中,當值包含空格或其他特殊字元時,$PATH外部雙引號會中斷,但在賦值中,它是安全的。export但是,您需要使用 with 編寫(export PATH=~/bin:"$PATH"儘管您不需要exportwith,PATH因為它已經在環境中)。在 zsh 中,你不需要雙引號,除非變數可能為空,但如果你設置PATHin .profile,它由/bin/shor處理/bin/bash

但是,如果您設置PATH在 中~/.pam_environment,則不能使用~or$HOME代表您的主目錄。這個文件不是由 shell 解析的,它是一個簡單的NAME=value行列表。因此,您需要完整地編寫路徑。

引用自:https://unix.stackexchange.com/questions/154281