1

I'm trying to make a compatible "say" command on Linux. So far this works:

alias say='echo "$1" | espeak -s 120 2>/dev/null'

I'm adding this to /etc/bash.bashrc. Problem is, this say is called from my_ruby_file.rb. I understood what's the problem, but I cannot change the file. The Ruby file uses sh, and not bash. My question is, how can I use this alias so say would be available in all shells?

MadHatter
  • 79,770
  • 20
  • 184
  • 232
valk
  • 497
  • 2
  • 9
  • 20
  • 1
    Also, aliases do not use positional parameters. You would need to use a function: `say() { espeak -s 120 2>/dev/null <<< "$*"; }`. But @John has given you the correct answer. – glenn jackman Jan 24 '13 at 22:05

1 Answers1

1

Each shell has it's own alias file. You'll have to add the alias to each shell's file, and even then you're not guaranteed to read the alias file from a shell exec'ed from Ruby. You're better off (in this case) creating a script called "say" somewhere in the path recognized in your .rb file instead of a shell alias.

John
  • 9,070
  • 1
  • 29
  • 34