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并采购它并没有帮助。我究竟做错了什么?当我尝试从 say 访问文件时/home/username/Research/Dissertation/wigner/ic,我不能。

我在这里阅读了一些帖子,但它们并没有真正帮助。我是否缺少冒号、分号、美元符号?

4

2 回答 2

3

听起来您可能误解了$PATH. $PATH只是告诉 Bash 在哪里寻找可执行文件和脚本。例如,这个命令:

foo bar.txt

将(通常)搜索$PATH名为 的可执行文件foo,以及以下命令:

bash foo.sh
. foo.sh

将(通常)搜索$PATHfoo.sh除非foo.sh当前目录中有 a;但这些命令:

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

不会搜索。_$PATH _foo.txt

此外,您写的是“该目录中的文件及其子目录”,但$PATH对子目录没有用。Bash 永远不会搜索$PATH可执行文件名是否包含/. 例如,这个命令:

foo/bar baz.txt

将运行./foo/bar,并且不会搜索$PATH名为foo.


编辑添加:所以,你可以做什么。. .

最终,您需要在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 回答