Funktion funktioniert über die Befehlszeile, aber nicht innerhalb eines Skripts

Funktion funktioniert über die Befehlszeile, aber nicht innerhalb eines Skripts

Ich habe eine Shell-Skriptdatei, die einen Ruby-Entwicklungsserver startet und den Titel des Fensters festlegt. Aus irgendeinem Grund funktioniert es unter OS X nicht, aber unter Ubuntu hat es funktioniert.

Hier ist mein Skript:

[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

Läuft über die Befehlszeile einwandfrei, schlägt jedoch innerhalb des Skripts fehl.

[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 

Diese letzte Zeile ist das Problem.

Und meine Titelfunktion (in meinem ~/.bash_profile):

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

Muss ich das anders machen, weil es auf OSX ist?

Bearbeiten: Ich habe versucht, die Titelfunktion zu /Users/[me]/.bashrc hinzuzufügen, und erhalte immer noch den Fehler.

Antwort1

Ich habe keinen Mac zur Verfügung, um dies auszuprobieren, aber was wäre, wenn Sie in Ihr Skript einen Verweis auf die Funktionsquelle einfügen würden, wie:

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

verwandte Informationen