I recommend you peruse the advice in Eric Raymond's How to Become a Hacker and compare it with the recommendations you read here as you are deciding.
If you have C/C++ experience, I recommend you start with that language in UNIX. Get ahold of a UNIX/Linux systems calls book to teach you what all is available in the operating system libraries. Spend a year becoming familiar with them. Write some applications to do UNIXy things, such as processing an arbitrary number of lines of input as a filter, redirecting input and output, forking and exec'ing processes, etc.
If you haven't done C or C++, then I recommend you start with Perl. Get ahold of O'Reilly's Learning Perl and go through that; then read the online perldoc documentation for Perl, one document at a time; execute the command perldoc perl to get a list of perldoc documents to read. Build some UNIXy things in Perl, as above.
Regardless of where you start, also spend that first year becoming familiar with what you need to know to use your shell (bash) effectively in an interactive context, and also how to use a good, traditional, programmer's-oriented editor like vim or emacs. As part of learning to get around the shell, learn to read man pages.
After the first year, I'd add a language a year or so and work toward getting a good grasp of it. You want to cover Perl, C, C++, Java, Python, shell scripting, and if you want to go for true programmer enlightenment you want Scheme or Lisp [this isn't for UNIX mastery, though].
What follows is my subjective opinion (more subjective than above, that is):
- Depending on your experience, you could probably combine C and C++ in a single year. C++ can also probably be dispensed with if you learn Java. With Java and C experience, you could pick up C++ quickly later if you need it.
- You probably only need one of Perl or Python. Again, with one you can probably easily pick up the other. I am biased in favor of Perl (a not unreasonable bias, IMO :) ). You can find informative debates about which is "best" elsewhere on SO.
- If you learn Perl or Python, you probably don't need a full year of shell scripting experience. Just enough to learn how to automate simple tasks in the shell, to read scripts you encounter, and to learn why you should always use a dynamic "scripting" language like Perl or Python instead of shell scripting.
- Learn to compile open source software packages from source code, including your own Perl (or Python). Learn to install in non-standard locations.
- Look up the Linux From Scratch HOWTO and work through it at least once.
- For real UNIX mastery, get a Linux kernel internals book and play with the kernel.
- For real programming mastery, learn Scheme or Lisp. I'm sadly not there, yet, although I did both in college, years ago.
- Learn to use the CPAN (which will require Perl).
- I do not recommend TCL as a language, but O'Reilly's Learning Expect by Don Libes really contributed a lot to my understanding of the UNIX way, as well as containing a lot of random miscellaneous pieces of UNIX information I didn't see anywhere else. (Expect is a TCL-based language.)