Функція працює з командного рядка, але не зсередини сценарію


0

У мене є файл сценарію оболонки, який запускає сервер 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

Відповіді:


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, а функція назви ще не була доступна, перш ніж я спробував виправити. Є файл bashrc в іншому місці в системі на Mac?
jcollum
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.