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?

1
  • 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. Jan 24, 2013 at 22:05

1 Answer 1

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .