mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-25 23:11:02 +08:00
校对中
校对中
This commit is contained in:
parent
b48f9f8d80
commit
06e49066ec
@ -1,15 +1,8 @@
|
|||||||
[HaitaoBio](https://github.com/HaitaoBio) translating...
|
Linux 命令行工具使用小贴士及技巧(三) - 环境变量 CDPATH
|
||||||
|
|
||||||
Linux 命令行工具使用小贴士及技巧 3 - 环境变量 CDPATH
|
|
||||||
============================================================
|
============================================================
|
||||||
|
|
||||||
### 文章导航
|
在这个系列的第一部分,我们详细地讨论了 `cd -` 命令,在第二部分,我们深入探究了 `pushd` 和 `popd` 两个命令,以及它们使用的场景。
|
||||||
|
|
||||||
1. [The CDPATH environment variable 环境变量 CDPATH ][1]
|
|
||||||
2. [Points to keep in mind 要点][2]
|
|
||||||
3. [Conclusion 总结][3]
|
|
||||||
|
|
||||||
在这个系列的第一部分,我们详细地讨论了 `cd -` 命令,并且在第二部分,我们深入探究了 `pushd` 和 `popd` 两个命令
|
|
||||||
|
|
||||||
继续对命令行的讨论,在这篇教程中,我们将会通过简单易懂的实例来讨论 `CDPATH` 这个环境变量。我们也会讨论关于此变量的一些进阶细节。
|
继续对命令行的讨论,在这篇教程中,我们将会通过简单易懂的实例来讨论 `CDPATH` 这个环境变量。我们也会讨论关于此变量的一些进阶细节。
|
||||||
|
|
||||||
@ -17,44 +10,49 @@ _在这之前,先声明一下此教程中的所有实例都已经在 Ubuntu 14
|
|||||||
|
|
||||||
### 环境变量 CDPATH
|
### 环境变量 CDPATH
|
||||||
|
|
||||||
即使你的命令行在特定的目录下 - 但也必须在切换目录时提供绝对路径。比如,在 _/home/himanshu/Downloads_ 目录下确认当前的目录位置:
|
即使你的命令行所有操作都在特定的目录下 - 例如你的主目录 - 在切换目录时你也不得不提供绝对路径。比如,考虑我现在的情况,就是在 _/home/himanshu/Downloads_ 目录下:
|
||||||
|
|
||||||
```sh
|
```
|
||||||
$ pwd
|
$ pwd
|
||||||
/home/himanshu/Downloads
|
/home/himanshu/Downloads
|
||||||
```
|
```
|
||||||
|
|
||||||
要切换至 _/home/himanshu/Desktop_ 目录,我一般会这样做:
|
现在要求切换至 _/home/himanshu/Desktop_ 目录,我一般会这样做:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd /home/himanshu/Desktop/
|
cd /home/himanshu/Desktop/
|
||||||
```
|
```
|
||||||
|
|
||||||
或者
|
或者
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ~/Desktop/
|
cd ~/Desktop/
|
||||||
```
|
```
|
||||||
|
|
||||||
或者
|
或者
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ../Desktop/
|
cd ../Desktop/
|
||||||
```
|
```
|
||||||
|
|
||||||
能不能只是运行以下命令就能简单地实现呢:
|
能不能只是运行以下命令就能简单地实现呢:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd Desktop
|
cd Desktop
|
||||||
```
|
```
|
||||||
|
|
||||||
是的,这完全有可能。这就是环境变量 `CDPATH` 出现的时候了。你可使用这个变量来为 `cd` 命令定义基础目录。
|
是的,这完全有可能。这就是环境变量 `CDPATH` 出现的时候了。你可使用这个变量来为 `cd` 命令定义基础目录。
|
||||||
|
|
||||||
如果你想尝试打印它的值,你会看见这个环境变量默认是空值的:
|
如果你尝试打印它的值,你会看见这个环境变量默认是空值的:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ echo $CDPATH
|
$ echo $CDPATH
|
||||||
$
|
$
|
||||||
```
|
```
|
||||||
|
|
||||||
现在 ,考虑到已经详细地对它进行了讨论,接着让我们定义这个环境变量为 _/home/himanshu_,作为 `cd` 命令的基础目录来使用把。
|
现在 ,考虑到上面提到的场景,我们使用这个环境变量,将 _/home/himanshu_ 作为 `cd` 命令的基础目录来使用。
|
||||||
|
|
||||||
最简单的做法时这样:
|
最简单的做法这样:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
export CDPATH=/home/himanshu
|
export CDPATH=/home/himanshu
|
||||||
@ -74,7 +72,7 @@ $
|
|||||||
|
|
||||||
### 要点
|
### 要点
|
||||||
|
|
||||||
现在你应该知道是怎样利用环境变量 CDPATH 来简易地在 _/home/himanshu/Downloads_ 和 _/home/himanshu/Desktop_ 之间切换。现在,考虑以下这种情况, 在 _/home/himanshu/Desktop_ 目录里包含一个名字叫做 _Downloads_ 的子目录,这是之后将要切换到的目录。
|
现在你应该知道了怎样利用环境变量 CDPATH 在 _/home/himanshu/Downloads_ 和 _/home/himanshu/Desktop_ 之间轻松切换。现在,考虑以下这种情况, 在 _/home/himanshu/Desktop_ 目录里包含一个名字叫做 _Downloads_ 的子目录,这是将要切换到的目录。
|
||||||
|
|
||||||
但突然你会意识到 _cd Desktop_ 会切换到 _/home/himanshu/Desktop_。所以,为了确保这不会发生,你可以这样做:
|
但突然你会意识到 _cd Desktop_ 会切换到 _/home/himanshu/Desktop_。所以,为了确保这不会发生,你可以这样做:
|
||||||
|
|
||||||
@ -82,21 +80,21 @@ $
|
|||||||
cd ./Downloads
|
cd ./Downloads
|
||||||
```
|
```
|
||||||
|
|
||||||
当上述的命令执行没有问题时,就会带来额外的效果( 无论这有多大 ),特别是考虑到你在类似的情况发生时必须这样做。所以,有一个更加优雅的解决方案来处理,就是以如下方式来设定 `CDPATH` 环境变量。
|
虽然上述命令本身没有问题,但你还是需要耗费点额外的精力( 虽然很小 ),尤其是每次这种情况发生时你都不得不这样做。所以,有一个更加优雅的解决方案来处理,就是以如下方式来设定 `CDPATH` 环境变量。
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
export CDPATH=".:/home/himanshu"
|
export CDPATH=".:/home/himanshu"
|
||||||
```
|
```
|
||||||
|
|
||||||
这意味这你在告诉 `cd` 命令先在当前的工作目录查找该目录,然后再尝试搜寻 _/home/himanshu_ 目录。当然, `cd` 命令是否以这样的方式运行,完全取决于你的偏好和要求 - 我在这个讨论下的提起这些是为了让你知道这种情况也有可能发生。
|
它的意思是告诉 `cd` 命令先在当前的工作目录查找该目录,然后再尝试搜寻 _/home/himanshu_ 目录。当然, `cd` 命令是否以这样的方式运行,完全取决于你的偏好和要求 - 讨论这一点的目的是为了让你知道这种情况可能会发生。
|
||||||
|
|
||||||
就如你现在所知道的,一旦环境变量 `CDPATH` 被设置,它的值 - 或者它所包含的路径集合 - 就是系统中给 `cd` 命令搜索目录的地方 ( 除了包含了你所使用的绝对路径 )
|
就如你现在所知道的,一旦环境变量 `CDPATH` 被设置,它的值 - 或者它所包含的路径集合 - 就是系统中 `cd` 命令搜索目录的地方 ( 当然除了使用绝对路径的场景 )。所以,完全取决于你来确保该命令行为的一致性。
|
||||||
|
|
||||||
继续说,如果一个 bash 脚本以相对路径使用 `cd` 命令的话,最好还是先清除或者重置环境变量 `CDPATH`,除非你觉得遇上不可预测的麻烦也无所谓。还有一个可选的方法,比起在终端使用 `export` 命令来设置 `CDPATH`,你可以在测试完交互式/非交互式 shell 之后,在你的 `.bashrc` 文件里设置环境变量,这样可以确保你对环境变量的改动只对交互式 shell 生效。
|
继续说,如果一个 bash 脚本以相对路径使用 `cd` 命令,最好还是先清除或者重置环境变量 `CDPATH`,除非你觉得遇上不可预测的麻烦也无所谓。还有一个可选的方法,比起在终端使用 `export` 命令来设置 `CDPATH`,你可以在测试完交互式/非交互式 shell 之后,在你的 `.bashrc` 文件里设置环境变量,这样可以确保你对环境变量的改动只对交互式 shell 生效。
|
||||||
|
|
||||||
环境变量中,路径出现的顺序同样也是很重要。举个例子,如果当前目录是在 _/home/himanshu_ 目录之前列出来,`cd` 命令就会先搜索当前的工作目录然后才会移动到 _/home/himanshu_ 目录。然而,如果该值为 _"/home/himanshu:."_,搜索就首先从 _/home/himanshu_ 开始,然后到当前目录。不必要地说一句,这会影响 `cd` 命令的行为,并且不注意路径的顺序可能会导致一些麻烦。
|
环境变量中,路径出现的顺序同样也是很重要。举个例子,如果当前目录是在 _/home/himanshu_ 目录之前列出来,`cd` 命令就会先搜索当前的工作目录然后才会移动到 _/home/himanshu_ 目录。然而,如果该值为 _"/home/himanshu:."_,搜索就首先从 _/home/himanshu_ 开始,然后到当前目录。不用说,这会影响 `cd` 命令的行为,并且不注意路径的顺序可能会导致一些麻烦。
|
||||||
|
|
||||||
要牢记在心的是,环境变量 `CDPATH`,就像其名字表达的,只对 `cd` 命令有作用。意味着在 _/home/himanshu/Downloads_ 目录里面时,你能运行 `_cd Desktop_` 命令来切换到 _/home/himanshu/Desktop_ 目录,当你不能使用 `ls`。以下是一个例子:
|
要牢记在心的是,环境变量 `CDPATH`,就像其名字表达的,只对 `cd` 命令有作用。意味着在 _/home/himanshu/Downloads_ 目录里面时,你能运行 `_cd Desktop_` 命令来切换到 _/home/himanshu/Desktop_ 目录,但你不能使用 `ls`。以下是一个例子:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ pwd
|
$ pwd
|
||||||
|
Loading…
Reference in New Issue
Block a user