Shell函数比PATH中的相同函数好吗?


1

我对shell函数的多余使用感到有些困惑。

我对shell函数的定义:.bashrc中的函数

的.bashrc

--- other default bash configs ----

extract() {     // I call this a shell function
   ....
}

我对PATH的函数定义:文件位于PATH的文件夹。例如,我们有文件〜/ bin / screen / convert.screen

要将文件夹中的文件和其他文件添加到我的PATH,我可以使用以下PATH

 export PATH='/Users/masi/bin/screen:' 

我想知道什么时候应该将该函数用作登录shell函数,何时将其放入PATH。我目前更喜欢后者,因为前者会增加维护成本。

用户自定义的shell函数的优点是PATH中的函数没有?


1
您能详细说明一下吗?我很难理解您的要求。
Sasha Chedygov

@musicfreak:我在帖子中添加了对给定函数的定义。
莱奥波德·赫兹(LéoLéopoldHertz),2009年

Answers:


4

Shell函数易于修改和维护。当您知道总是需要它们时(即使它的使用频率要低得多),而不是临时的,您应该将它们添加到PATH中。当您知道并不需要所有的rc文件时,就无需加载不断增加的rc文件。如果您使用的是大型功能,但使用频率较低,但它非常重要,请使其可从您访问,PATH以便仅在需要时才能使用。


因此,您的意思是登录时未加载PATH中的应用程序。而是将它们的名称放到在PATH中显示程序的列表中。如果您使用TAB键,则会搜索此列表。---我从来没有这么大的外壳应用程序会减慢我的计算机速度。似乎最好将大型Shell应用程序添加到PATH中,否则会导致速度降低。
莱奥波德·赫兹(LéoLéopoldHertz)2009年

1

如果约定这将有助于 接受的描述外壳功能作为写在一个文件中(脚本)功能,可以在源加载到你的shell和其他脚本和shell命令使用

如果我们对术语进行这种解释,那么shell函数通过脚本和命令中的“函数”使您的生活更轻松。

更进一步,您还可以考虑将不常用的“函数”编写在单独的文件中,并将其与其他脚本一起存储。当您需要这些脚本时,您可以仅将该脚本来源到您的shell中。


因此,shell函数是源自PATH的函数,因此您可以在需要时加载并调用它。
莱奥波德·赫兹(LéoLéopoldHertz),2009年

1
@Masi,以及在脚本文件中使用的可在其中使用的函数。是。
NIK

1

我将Shell函数用于相对较小且独立的事物,并且它们是Shell的帮助程序命令,而不是本身具有完整程序的命令。一旦某个东西变成了合适的程序,我就将它写成这样,然后将其移动到我的文件夹中的bin目录中$HOME(该文件夹已经在我的中了PATH)。

这是一个例子:

# Start mpd (if necessary), search for music using mpc, play music.
mp-start()
{
    ps -C mpd > /dev/null || mpd
    mpc search any $1 | mpc add -
    mpc play
}

那是功能而不是程序。它几乎没有什么用,如果我已经在外壳中工作了,我将只使用它。

我还发现将我的Shell的所有功能放入一个单独的文件(对我来说是.bash_functions,但我认为您是Z Shell的用户,因此进行相应调整)会更干净,该文件是从Shell的主要rc文件中获取的。最后一个技巧是在别名中添加以下内容:

alias refunction='vim ~/.bash_functions; source ~/.bash_functions'

这样一来,您就可以即时创建一个新功能,并在完成编辑后立即使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.