$PATH 環境変数が認識されないようです。

$PATH 環境変数が認識されないようです。

Debian Wheezyを新しくインストールし、ここにzshをインストールしました。数日後、TeX Live 2014のバニラのインストールを完了し、$ 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

~/binそして、実行権限が設定されていると、hello_worldが正しく機能していることがわかりますが、動作しませんrehash

答え1

次のシェルコマンドで

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

シェルコマンドが実行されると、チルダはホームディレクトリに展開されます。したがって、結果の値PATH /home/theconjuring/bin:/opt/texbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

チルダが引用符(PATH="~/bin:…")内にないことを確認してください。それ以外の場合、チルダが現在の値の前にディレクトリを追加するには、次のようにPATHします。

PATH=~/bin:$PATH

通常、zsh以外のシェルでは$PATH二重引用符しかありません値にスペースやその他の特殊文字が含まれていると中断されます。が、職場では安全です。ただし、forをexport作成する必要があります(すでに環境にあるのでwithはexport PATH=~/bin:"$PATH"必要ありませんが)。 zshでは、変数が空でない限り二重引用符は必要ありませんが、in is setの場合はorによって処理されます。exportPATHPATH.profile/bin/sh/bin/bash

PATHただし、 に設定すると~/.pam_environmentホームディレクトリを使用~したり表現することはできません。$HOMEファイルはシェルから解析されず、単純な行のNAME=valueリストです。したがって、フルパスを作成する必要があります。

答え2

アップデート:バッシュ〜するPATH変数で~を展開します。しかし、注意してください。 Pythonはそうではありません。私はこれを難しい方法で見つけました。

$ export PATH="~/foo:$PATH"
$ type -a foo.sh
foo.sh is /home/myles/foo/foo.sh
Python 3.9.11 (main, Sep  2 2022, 07:10:47)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.6.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: shutil.which('foo.sh')
None

関連情報