Zainspirowany "Getting the source directory of a Bash script from within", jaki jest sposób Ruby to zrobić?Czy skrypt Ruby może określić, w którym katalogu się znajduje?
Odpowiedz
File.dirname(__FILE__)
poda ścieżkę odnoszącą się do uruchamianego skryptu. File.expand_path(File.dirname(__FILE__))
dadzą ci absolutną ścieżkę.
ENV ["PWD"] wydaje mi się najprostszym sposobem pod Linuksem. Nie znam sposobu, w jaki agnostyk może działać w systemie OS.
Dzięki! Dobry dla mojej ogólnej wiedzy o Linuksie. –
To jest katalog domowy, a nie bieżący katalog roboczy lub katalog, w którym znajduje się skrypt. –
B * gger, brak snu to zrobi. Miałem na myśli oczywiście ENV ["PWD"]. Ale odpowiedź Ba jest znacznie lepsza. – Shadowfirebird
Zastosowanie __dir__
Jak Ruby 2.0, __dir__
jest najprostszym sposobem, aby dostać to. To
Zwraca też w postaci bezwzględną ścieżkę do katalogu z plikiem z którego ta metoda jest wywoływana.
Zobacz dokumentację __dir__
i "Why is __FILE__ uppercase and __dir__ lowercase?".
Cóż, oprócz" __dir__ "będącego poprawną odpowiedzią, dzięki za połączenie z różnicą wielkich i małych liter, było moje pierwsze pytanie po znalezieniu go jako dobrze :) – SidOfc
użycie __dir__
File.dirname(__FILE__)
nie jest właściwym sposobem na uzyskanie katalog, w którym jest przechowywany skrypt.
Na początku katalog roboczy i katalog z plikiem skryptowym jest taki sam, ale może się zmienić.
Na przykład:
Dir.chdir('..') do
puts __dir__
puts File.expand_path(File.dirname(__FILE__))
end
do pliku skryptu zapisanego w /Desktop/tmp
działa da wyświetlamy
/home/mateusz/Desktop/tmp
/home/mateusz/Desktop
- 1. xcodebuild - jak określić katalog, w którym znajduje się projekt, bez tworzenia w nim cd
- 2. Sprawdź, czy plik znajduje się w (pod) katalogu
- 3. Jak określić ścieżkę katalogu publicznego w aplikacji Ruby on Rails?
- 4. Gdzie znajduje się interpreter Ruby?
- 5. Bash-one-liner, aby przejść do katalogu, w którym znajduje się jakiś plik
- 6. Skrypt nie został skompilowany, jeśli znajduje się w podfolderze?
- 7. Jak określić katalog, w którym działa uruchomiony skrypt lub aplikacja Haskell?
- 8. określić, czy punkt znajduje się wewnątrz dowolnego kształtu?
- 9. Czy skrypt Scala może odwoływać się do innego nieskompilowanego kodu scala w tym samym katalogu?
- 10. Jak mogę się dowiedzieć, ile plików znajduje się w katalogu?
- 11. Jak ustalić, czy ścieżka znajduje się wewnątrz katalogu? (POSIX)
- 12. Zastosowanie Foreman Start Rack App Znajduje się w innym katalogu
- 13. Błąd Ruby: "Brak takiego pliku lub katalogu - skrypt/generowanie (LoadError)"
- 14. #/usr/bin/env ruby nie znajduje się w cron
- 15. Czy można określić, czy punkt GeoJSON znajduje się wewnątrz wieloboku GeoJSON przy użyciu JavaScriptScript?
- 16. oglądanie katalogu w ruby
- 17. Czy istnieje funkcja Python do określenia, w którym kwartale roku znajduje się data?
- 18. Jak uzyskać tylko nazwę folderu nadrzędnego w katalogu, w którym skrypt jest uruchomiony w php?
- 19. Uruchomiony skrypt bash jest zawieszony gdzieś. Czy mogę się dowiedzieć, na której linii się znajduje?
- 20. Ruby Jak określić środowisko wykonawcze
- 21. Ustal, czy lokalizacja pamięci znajduje się w pamięci podręcznej CPU
- 22. Ustalenie, czy zmienna znajduje się w zasięgu?
- 23. Czy w IDEA znajduje się adnotacja @NonNullByDefault?
- 24. Ustal, czy punkt znajduje się w ramce ograniczającej
- 25. Czy skrypt PHP może uruchomić inny skrypt PHP i zakończyć?
- 26. Ustalenie, czy punkt znajduje się wewnątrz geometrii
- 27. Get katalogu nadrzędnego katalogu bieżącym w Ruby
- 28. Excel znajdź komórki z zakresu, w którym wartość wyszukiwania znajduje się w komórce
- 29. określić, czy punkt na ekranie znajduje się w określonym podglądzie UIScrollView
- 30. Jak określić, czy bieżące położenie użytkownika znajduje się w moim MKCoordinateRegion?
to niewłaściwy sposób to zrobić i może powodować błędy. \t Należy pamiętać, że po użyciu polecenia Dir.chdir może to być inny katalog niż miejsce przechowywania skryptu. "__dir__" jest właściwym sposobem na zrobienie tego. –
To wydaje się być jedyną drogą dla każdego, kto utknął w Rubim <2.0 –