函数在命令行下有效,但在脚本内无效

函数在命令行下有效,但在脚本内无效

我有一个 shell 脚本文件,用于启动 ruby​​ 开发服务器并设置窗口标题。由于某种原因,它在 OS X 中不起作用,但在 Ubuntu 中却起作用。

这是我的脚本:

[10:24:48] [user@mac site_web]$ tail ./sdev.sh
#!/bin/bash
title "dev server port 3000"
RAILS_ENV=development rails s -p 3000 --debugger

从命令行运行良好,但从脚本内部运行失败。

[10:18:17] [user@mac site_web]$ title "dev server" 
title changed
[10:18:29] [user@mac site_web]$ ./sdev.sh
./sdev.sh: line 2: title: command not found 

最后一行就是问题所在。

我的标题函数(在我的 ~/.bash_profile 中):

# function for setting terminal titles in OSX
function title {
  printf "\033]0;%s\007" "$1"
  echo "title changed" 
}

因为它是在 OSX 上,我是否需要以不同的方式执行此操作?

编辑:我尝试将标题函数添加到 /Users/[me]/.bashrc 但仍然出现错误。

答案1

我没有 Mac 可以尝试这个,但是如果你在脚本中包含对函数源的引用,结果会怎样?

#!/bin/bash
. $HOME/.bash_profile
title "dev server port 3000"
RAILS_ENV=development rails s -p 3000 --debugger

http://ubuntuforums.org/showthread.php?t=664657

相关内容