Funktion funktioniert von der Kommandozeile, aber nicht vom Skript aus


0

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

Hier ist mein Drehbuch:

[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 problemlos über die Befehlszeile, 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 unter OSX läuft?

Bearbeiten: Ich habe versucht, die Titelfunktion zu /Users/[me[/.bashrc hinzuzufügen, und es wird immer noch der Fehler angezeigt.


Versuchen Sie .bashrcstattdessen , die Funktion in Ihren
slhck

@slhck wie ich es verstehe, das gibt es nicht auf Mac
OS

@slhck sieht so aus, als wäre das falsch; fügte die Funktion zu .bashrc hinzu und ich erhalte immer noch den Fehler
jcollum

Nun, es gibt es nicht standardmäßig, aber es wird von Bash gelesen, wenn es aufgerufen wird. Siehe joshstaiger.org/archives/2005/07/bash_profile_vs.html - in Ihrem Fall sollten Sie jedoch wahrscheinlich source ~/.bash_profile(oder ~/.bashrc) aus Ihrem Skript. Ich glaube, dass hier etwas fehlt, aber die Beschaffung der Konfigurationsdatei sollte die Funktion verfügbar machen.
Slhck

@slhck Ich habe versucht, dass nur ein paar Minuten, bevor Sie kommentierten if [ -f ~/.bashrc] etc.., es nichts geändert
jcollum

Antworten:


1

Ich habe keinen Mac, um dies zu versuchen, aber was ist, wenn Sie einen Verweis auf die Funktionsquelle in Ihr Skript aufgenommen haben?

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


Das scheint es behoben zu haben. Aber ich habe meinem ~ / .bashrc die Titelfunktion hinzugefügt, und die Titelfunktion war noch nicht verfügbar, bevor ich Ihr Update ausprobiert habe. Gibt es eine bashrc-Datei auf einem Mac an einer anderen Stelle im System?
jcollum
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.