我想了解完整路径名的真正含义。我的主目录中有一个名为 my_script 的文件。我假设完整路径名是 ./my_script,这意味着它位于根文件夹中,但我不确定。有人可以告诉我吗?
答案1
不,你的假设是错误的。你的主目录中文件的完整路径名my_script
是:/home/your_user_name/my_script
。当你./my_script
在终端中输入时,你实际上是在尝试执行脚本(如果是可执行文件),并且只有当你当前的工作目录是时才会执行它/home/your_user_name/
。要执行脚本,你也可以使用完整的文件路径,正如我所说的/home/your_user_name/my_script
。
人们认为 UNIX 路径名看起来和感觉起来都像 Internet 地址,因此会产生兼容性。可以使用以下命令在终端中找到当前工作目录的完整路径名:
pwd
要找出用户主目录的完整路径,您可以使用:
echo ~
echo $HOME
echo /home/$USER
以上三条命令是等效的。
要找出文件的完整路径名,您可以使用readlink
命令。例如,就你的情况而言:
cd ~
readlink -f my_script
答案2
完整路径名实际上是指从文件系统目录到该文件或文件夹的完整路径/
。
例如,脚本的完整路径是:
/home/your_username/my_script
或者,可执行文件的完整路径名grep
是
/bin/grep
至于./my_script
,符号.
代表当前目录,所以你实际上是说“在当前目录下查找名为 my_script 的文件或文件夹”
答案3
为了了解完整路径,您必须首先知道起点。
根目录/
是 *nix 操作系统的起点。它包含系统和用户的所有其他目录。
用户主目录/home/USERNAME/
(~/
简称为)包含用户的文件和目录。例如图片、音乐、文档等。每个目录都以以下方式引用:例如,/home/USERNAME/DIRECTORY
文档位于/home/USERNAME/Documents
。
与目录一样,文件的引用方式也是相同的,例如,my_script
位于用户主目录中的文件sosytee
可以使用完整路径/home/sosytee/my_script
或~/my_script
简称来引用。
可以使用文件和目录的完整路径在系统中的任何位置引用/访问它们。此外,如果它们位于同一目录中,则只需使用它们的名称即可访问它们。例如,如果用户在~/
使用终端时位于,则他my_script
只需使用 即可访问文件 my_script
。
此外,如果目录和文件位于 PATH 变量中,则只需使用其名称即可访问它们。您可以使用 查看 PATH 中存储的内容echo $PATH
。
如何使用命令行访问文件的简单示例:
- 用户当前位于
/home/USERNAME/
并且想要对cat
位于 名为 foo.txt 的文件使用命令/home/USERNAME/Documents
:
cat Documents/foo.txt
用户在内部
~/Documents
并想要运行名为foo.sh
located ad 的脚本~/Scripts/Foo
:sh ../Scripts/Foo/foo.sh
或者
sh ~/Scripts/Foo/foo.sh
当然这只是一个总结。
更多信息
Bash 初学者指南,作者:Machtelt Garrels
有关 PATH 的更多信息这里
答案4
我假设完整路径名是 ./my_script
不是。该路径是相对的。开头的点表示当前目录:
$ ls ./my_script
my_script
$ cd ..
$ ls ./my_script
ls: cannot access ./my_script: No such file or directory
如您所见,我更改了目录,但my_script
没有找到,这意味着这./my_script
不是绝对路径。
我假设完整路径名是 ./my_script,这意味着它位于根文件夹中,但我不确定。
来自维基百科:
[...] 完整路径或绝对路径是指向一个文件系统上的同一位置的路径,无论工作目录或组合路径如何。
由于./my_script
不满足条件无论何时我都可以找到该my_script
文件,我们应该推断这是一条相对路径。
A相对路径是相对于用户或应用程序的工作目录的路径,因此不必提供完整的绝对路径。