【发布时间】:2013-12-25 09:44:16
【问题描述】:
当我输入 echo $PATH 和 echo $FPATH 时,我得到不同的输出。 $PATH和$FPATH有什么区别?
我使用 Mac OSX Mavericks。
【问题讨论】:
-
为什么你期望两个不同的变量包含相同的值?
-
小心那里的大写小写字母。 Shell 变量区分大小写,所以
PATh和PATH是不同的东西。
当我输入 echo $PATH 和 echo $FPATH 时,我得到不同的输出。 $PATH和$FPATH有什么区别?
我使用 Mac OSX Mavericks。
【问题讨论】:
PATh 和PATH 是不同的东西。
类 Unix 系统上的所有 shell 都会搜索 PATH 以查找作为子进程运行的可执行文件。
Korn shell(ksh) 在FPATH 中搜索定义要在当前进程中加载和执行的 shell 函数的文件。
Z shell (zsh) 在fpath 中搜索定义要在当前进程中加载和执行的 shell 函数的文件。见Autoloading Functions。
【讨论】:
fpath 在 zsh 中绝对意味着某些东西:zsh.sourceforge.net/Doc/Release/Functions.html
FPATH 是函数定义的搜索路径。
FPATH 函数定义的搜索路径。当引用具有 -u 属性的函数并且未找到命令时,将在此路径中的目录中搜索与函数或命令同名的文件。如果找到具有该命令名称的可执行文件,则在当前环境中读取并执行该文件。与 PATH 不同,当前目录必须由 .而不是通过相邻的:字符或开头或结尾:。
【讨论】:
两者是不同的环境变量,它们的值可能不一样。
另外,请参阅有关 environment variables 的链接
FPATH
Contains a list of directories that the z/OS shell searches to find shell functions.
PATH
Defines the default command path.
【讨论】:
PATH 中将某些功能公开为函数或简单地作为可执行脚本有什么区别?
PATH中指定函数名吗?函数定义将存储在哪里以及如何获取?在哪种语言功能中?将是bash、csh 或zsh?
PATH 的可执行文件中实现该功能,还是应该在函数中实现该功能?”。每个的用例是什么?
PATH 中的现有路径之一。或者将包含可执行文件的路径添加到 PATH 变量中。
PATH 的可执行文件中实现。并非所有文件都在您的控制之下。在PATH 的函数内部实现非常困难(通过函数,我的意思是shell 中的函数)。因为在这里,您必须在 shell 中定义源代码。但是,在配置文件中定义函数非常容易(例如~/.bashrc、~/.bash_profile、~/.zshrc 等),然后该函数将可供该特定用户使用。如果你想要所有用户,那么你需要写一个shell文件并包含在PATH的标准路径中。