関数はコマンドラインからは動作しますが、スクリプト内からは動作しません。

関数はコマンドラインからは動作しますが、スクリプト内からは動作しません。

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

関連情報