1

パスにいくつかのディレクトリを追加して、そのディレクトリ内のファイルとそのサブディレクトリをセッション間でコマンドプロンプトから利用できるようにしようとしています。

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/username/OpenFOAM/OpenFOAM-2.1.0/etc/bashrc:/usr/share/texmf-texlive/tex/latex:/etc/crontab:/home/username/Research/Dissertation/wigner/ic/L=lambda:/home/username/Research/Dissertation/wigner/ic/L=2lambda:/home/username/Research/Dissertation/wigner/ic/L=3lambda:/home/username/Research/Dissertation/wigner/ic

以下を追加する

 /home/username/Research/Dissertation/wigner/ic/L=lambda:/home/username/Research/Dissertation/wigner/ic/L=2lambda:/home/username/Research/Dissertation/wigner/ic/L=3lambda:/home/username/Research/Dissertation/wigner/ic

私のexport PATHラインに.bashrcそしてそれを調達することは助けにはならなかった。私は何が間違っているのですか?たとえば、からファイルにアクセスしようとすると、アクセス/home/username/Research/Dissertation/wigner/icできません。

私はここでいくつかの投稿を読みましたが、それらはまったく役に立ちませんでした。コロン、セミコロン、ドル記号がありませんか?

4

2 に答える 2

3

の目的を誤解しているようです$PATH$PATH実行可能ファイルとスクリプトを探す場所をBashに指示するだけです。たとえば、次のコマンドは次のとおりです。

foo bar.txt

(通常)$PATH、という名前の実行可能ファイルを検索し、foo次のコマンドを実行します。

bash foo.sh
. foo.sh

現在のディレクトリにがない限り、(通常は)検索$PATHします。しかし、これらのコマンド:foo.shfoo.sh

cat foo.txt
vi foo.txt
less foo.txt

を検索しません$PATHfoo.txt

さらに、「そのディレクトリ内のファイルとそのサブディレクトリ」を記述しますが、サブ$PATHディレクトリには役立ちません。$PATH実行可能ファイル名にが含まれている場合、Bashは検索しません/。たとえば、次のコマンドは次のとおりです。

foo/bar baz.txt

が実行され./foo/bar、 。という名前のディレクトリは検索されません$PATHfoo


追加するために編集:だから、代わりに何ができるか。。。

montage最終的には、コマンドにディレクトリ情報を含める必要があります。

cd /home/username/Research/Dissertation/wigner/ic
montage -geometry +4+4 L=3lambda/three.jpg L=2lambda/two.png output.jpg

ディレクトリ情報を毎回入力するのが面倒な場合は、に独自の変数を設定して、.bashrcそれを明示的に使用できます。たとえば、次のように.bashrcなります。

export IC=/home/username/Research/Dissertation/wigner/ic
export ICL=$IC/L=lambda
export ICL2=$IC/L=lambda2
export ICL3=$IC/L=lambda3

そして、あなたは書くことができます:

montage -geometry +4+4 $ICL3/three.jpg $ICL2/two.png output.jpg

特定のファイルがどのサブディレクトリにあるかを覚えたくない場合は、fileglobを使用できます。

export IC=/home/username/Research/Dissertation/wigner/ic
export ICLs=$IC/L=lambda*

そして書く:

montage -geometry +4+4 $ICLs/three.jpg $ICLs/two.png output.jpg

シェルにそれを見つけさせます。(ただし、もちろん、これは、異なるサブディレクトリ内のファイル間に名前の競合がない場合にのみ適切に機能します。)

于 2012-10-23T13:55:16.653 に答える
1

あなたはあなたの:でいくつかの変数を定義することができ.bashrcます

H="/home/username/Research/Dissertation/wigner/ic"    
oneLam="$H/L=lambda"
twoLam="$H/L=2lambda"
threeLam="$H/L=3lambda"

そのため、ファイルの参照は次のようにどこからでも実行できます。

user@box:/some/horrendously/deep/path/$ vi $twoLam/some_file.txt
于 2012-10-23T14:06:48.023 に答える