bash – 什么是源shell函数?
在nvm
README.markdown中它说
我发现nvm安装过程将更新.bashrc [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 不知何故,这使得nvm命令可用于shell.我的问题是什么是“源shell函数”以及命令nvm执行的确切内容是什么? 解决方法
这个措辞很草率. nvm只是一个shell函数,它通过获取定义该函数的文件来定义.这并没有以任何定性方式改变功能:如果你手动输入它,它将是相同的功能,具有所有相同的行为,因此将“sourced”应用为修饰符有点误导;更确切地说,nvm.sh是一个源脚本,它定义了一个名为nvm的shell函数.
至于具体的语法: . somefile 是一种更便携的写作方式 source somefile …在当前shell中的somefile中执行操作,而不是在作为子进程运行的单独shell中执行. 因此,获取脚本可以修改当前的解释器 – 设置变量,更改其工作目录,以及是,定义别名和函数 – 以执行外部程序的方式不能. 澄清一下:如果你运行了bash somefile,那么somefile定义的任何函数只存在于bash的特定副本的持续时间 – 当它退出并返回到你的提示时,somefile中定义的函数将不再可用.相比之下,当您获取somefile时,因为somefile的内容在您当前的shell实例中执行,所以这些内容能够持久化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |