我已经写了一个内置的对于bash其中修改了“CD”命令,我的软件的要求。有没有一种方法来实际分配可加载独立的庆典本身?我非常喜欢分发刚刚在“附加功能”下降,因为我知道人们可以通过打补丁并从源代码编译它们的壳被推迟。

我想时间用户是在一个目录多久所以能够确定他们想要的。正是这种功能: http://github.com/joelthelion/autojump/tree/master改写为一个bash内置,性能问题。此实现使用$PROMPT_COMMAND工作,但我想要的东西集成。

有帮助吗?

解决方案

目前还不清楚已修改的话,但在任何情况下,bash(如至少ksh93其中IIRC引入的概念,并zsh)支持,使用enable -f file name语法,装载内置函数作为外部动态加载的模块。

这些模块是纯文本文件当然可以单独只要你确保它们与目标的版本/架构相兼容的分布。这已经成为事实5年前,当你问这个问题。

在你的情况的一个问题是似乎有超载没有记录方式内建有像由动态加载一个cd同时保持访问前的能力。

有一个简单的解决方法是实施以不同的名称自定义光盘,说mycd,像这样的:

int mycd_builtin(list)
WORD_LIST *list;
{
  int rv;
  rv=cd_builtin(list);
  if(rv == EXECUTION_SUCCESS) {
    char wd[PATH_MAX+1];
    getcwd(wd,sizeof(wd));
    // do your custom stuff knowing the new working directory
    ...
  }
  return (rv);
}

然后使用别名,或更好的,用于向用于代替常规的一个自定义版本的壳功能:

cd() {
  mycd "$@"
}

只要您的自定义不影响标准的命令的行为,因此不会冒险使用它打破剧本,没有什么错在你的方法。

其他提示

更改内置CD为任何管理支持噩梦和不受欢迎的外国用户。如果他们将其包含在他们的.bashrc或.profile想要的功能有什么不对其命名为“智能-CD”,并让用户决定?然后,他们可以设置的东西但是他们想要的。

此外,使用你已经多久目录是偏好的一个非常差的指示。你会如何空转(一个被遗忘的壳挂在/ tmp中过夜),长时间运行的脚本(夜间cron作业),与实际活动区别开来。

有其他方法可以创建快捷方式收藏目录众多:别名,软链接,$变量,脚本。这是傲慢的你,认为你的使用模式会被你的系统的其他用户的欢迎。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top