# Special Constants in Ruby
# FILE
Is the relative path to the file from the current execution directory
Assume we have this directory structure: /home/stackoverflow/script.rb
script.rb contains:
puts __FILE__
If you are inside /home/stackoverflow and execute the script like ruby script.rb
then __FILE__
will output script.rb
If you are inside /home then it will output stackoverflow/script.rb
Very useful to get the path of the script in versions prior to 2.0 where __dir__
doesn't exist.
Note __FILE__
is not equal to __dir__
# dir
__dir__
is not a constant but a function
__dir__
is equal to File.dirname(File.realpath(__FILE__))
# $PROGRAM_NAME or $0
Contains the name of the script being executed.
Is the same as __FILE__
if you are executing that script.
# $$
The process number of the Ruby running this script
# $1, $2, etc
Contains the subpattern from the corresponding set of parentheses in the last successful pattern matched, not counting patterns matched in nested blocks that have been exited already, or nil if the last pattern match failed. These variables are all read-only.
# ARGV or $*
Command line arguments given for the script. The options for Ruby interpreter are already removed.
# STDIN
The standard input. The default value for $stdin
# STDOUT
The standard output. The default value for $stdout
# STDERR
The standard error output. The default value for $stderr
# $stderr
The current standard error output.
# $stdout
The current standard output
# $stdin
The current standard input
# ENV
The hash-like object contains current environment variables. Setting a value in ENV changes the environment for child processes.