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によって処理されます。export
PATH
PATH
.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