函数从命令行运行,但不在脚本中运行


0

我有一个shell脚本文件,它启动一个ruby dev服务器并设置窗口的标题。出于某种原因,它不能在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,我仍然收到错误。


尝试把功能在你的.bashrc,而不是
slhck

@slhck据我了解,这不存在于mac os x
jcollum

@slhck看起来像是不正确的; 将功能添加到.bashrc并且我仍然得到错误
jcollum

好吧,它默认情况下不存在,但在调用时由bash读取。请参阅joshstaiger.org/archives/2005/07/bash_profile_vs.html - 但在您的情况下,您应该source ~/.bash_profile(或~/.bashrc)从您的脚本中获取。我相信这里有一些我不知道的东西,但是获取配置文件会使该功能可用。
slhck

@slhck我在你评论之前的几分钟尝试过if [ -f ~/.bashrc] etc..,它没有改变任何东西
jcollum

Answers:


1

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

#!/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


这似乎已经解决了。但我在我的〜/ .bashrc中添加了title函数,在我尝试修复之前,title函数仍然无法使用。在Mac上的系统中的其他地方是否有bashrc文件?
jcollum
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.