Извините, я хотел бы спросить об этом в виде комментария к выбранному ответу, но у меня пока нет ни одного представителя в superuser.
Ответ безопасности имеет смысл, но если вы поставите "." в вашей переменной PATH, как последняя вещь, разве оболочка не должна выглядеть последней в текущем каталоге при поиске исполняемых файлов и, таким образом, снизить угрозу безопасности? Если бы он выполнял поиск в $ PATH по порядку, он бы нашел /bin /ls, прежде чем найдет ./ls.
Итак, насколько небезопасно для меня ставить "." в конце моей переменной среды $ PATH?
Это работает, как я предлагаю. Вот как я тестировал:
Сначала добавьте "." в конец вашей переменной среды PATH.
Затем поместите следующий файл в какой-то каталог, например ~/dir1/dir2/test_which.rb:
#!/your/path/to/ruby
puts "this file is from the current directory"
И поместите этот файл в /usr/bin/test_which.rb
#!/your/path/to/ruby
puts "this file is at /usr/bin/test_which.rb"
Не забудьте chmod +x файлы, чтобы они были исполняемыми.
Теперь, если вы измените каталог на ~/dir1/dir2 и выполните test_which.rb, вы получите вывод
this file is at /usr/bin/test_which.rb
Действительно, если вы запустите «which test_which.rb» из любого места, он должен сообщить
/usr/bin/test_which.rb
Вы все еще можете выполнить файл в текущем каталоге, набрав:
./test_which.rb