
Issue #20399 has been updated by nobu (Nobuyoshi Nakada). Shebang makes sense only in an executable script. ```sh $ echo $'#!/bin/sh\np :sh' | ruby ruby: no Ruby script found in input (LoadError) bash: exit 1 $ ruby -e $'#!/bin/sh\np :sh' :sh ``` ---------------------------------------- Bug #20399: Ripper doesn't respect implicit -x https://bugs.ruby-lang.org/issues/20399#change-107530 * Author: kddnewton (Kevin Newton) * Status: Open * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- For the given script: ```ruby #!/bin/sh # -*- ruby -*- exec "${RUBY-ruby}" "-x" "$0" "$@" && [ ] if false #!ruby # This needs ruby 2.0, Subversion and Git. # As a Ruby committer, run this in an SVN repository # to commit a change. require 'tempfile' require 'net/http' ``` I would expect all of the various Ripper APIs (`lex`, `sexp`, `sexp_raw`, `new.parse`, etc.) to start parsing on line 4, because that's what the parser does. Instead, it starts parsing on line 1. -- https://bugs.ruby-lang.org/