[ruby-core:124731] [Ruby Misc#21872] `-S` with directory separator
Issue #21872 has been reported by nobu (Nobuyoshi Nakada). ---------------------------------------- Misc #21872: `-S` with directory separator https://bugs.ruby-lang.org/issues/21872 * Author: nobu (Nobuyoshi Nakada) * Status: Open ---------------------------------------- Ruby’s `-S` option searches the script from `$RUBYPATH` and `$PATH` always: ```console $ mkdir -p a/test $ echo 'p $0' > a/test/t.rb $ chmod +x a/test/t.rb $ PATH=$PWD/a:$PATH ruby -S test/t.rb ``` However, I don't think this action is intentional, because Perl’s `-S` doesn't search `$PATH` as stated at https://perldoc.perl.org/perlrun#-S:
makes Perl use the "PATH" environment variable to search for the program **unless the name of the program contains path separators**.
```console $ mkdir -p a/test $ echo 'print $0, "\n"' > a/test/t.pl $ chmod +x a/test/t.pl $ PATH=$PWD/a:$PATH perl -S test/t.pl Can't open perl script "test/t.pl": No such file or directory ``` This is same in `sh`: ```console $ echo 'echo $0' > a/test/t.sh $ chmod +x a/test/t.sh $ PATH=$PWD/a:$PATH sh -c test/t.sh sh: test/t.sh: No such file or directory ``` -- https://bugs.ruby-lang.org/
Issue #21872 has been updated by nobu (Nobuyoshi Nakada). Tracker changed from Misc to Feature Matz thinks old Perl didn't see the separator and it changed then probably because of security improvements. We agreed that also Ruby should follow it. ---------------------------------------- Feature #21872: `-S` with directory separator https://bugs.ruby-lang.org/issues/21872#change-116364 * Author: nobu (Nobuyoshi Nakada) * Status: Open ---------------------------------------- Ruby’s `-S` option searches the script from `$RUBYPATH` and `$PATH` always: ```console $ mkdir -p a/test $ echo 'p $0' > a/test/t.rb $ chmod +x a/test/t.rb $ PATH=$PWD/a:$PATH ruby -S test/t.rb ``` However, I don't think this action is intentional, because Perl’s `-S` doesn't search `$PATH` as stated at https://perldoc.perl.org/perlrun#-S:
makes Perl use the "PATH" environment variable to search for the program **unless the name of the program contains path separators**.
```console $ mkdir -p a/test $ echo 'print $0, "\n"' > a/test/t.pl $ chmod +x a/test/t.pl $ PATH=$PWD/a:$PATH perl -S test/t.pl Can't open perl script "test/t.pl": No such file or directory ``` This is same in `sh`: ```console $ echo 'echo $0' > a/test/t.sh $ chmod +x a/test/t.sh $ PATH=$PWD/a:$PATH sh -c test/t.sh sh: test/t.sh: No such file or directory ``` -- https://bugs.ruby-lang.org/
participants (1)
-
nobu (Nobuyoshi Nakada)