Apa arti dari ./ sebelum jalur yang diberikan?

25

Saya telah diberitahu untuk menjalankan ini:

./yiic message ./app/messages/config.php

Tapi saya tidak mengerti ./artinya, bisa ada yang menjelaskan.

Catatan: Percayalah, kami tidak dapat Google itu. Saya sudah mencoba:

./ artinya ./ ubuntu

Itu sama seperti tidak ada. :(

MEM
sumber
3
Dalam kasus ini, yang terbaik adalah mencari "dot slash", yang memberikan hasil yang sangat berguna ini: linfo.org/dot_slash.html
heltonbiker

Jawaban:

29

./atau hanya .singkatan unix untuk direktori saat ini.

Anda perlu menentukannya ketika direktori saat ini tidak ada di PATH Anda. PATH adalah daftar folder yang dicari saat Anda menjalankan program. (Anda dapat menentukannya dengan menulis echo $PATH.) Jika file yang dapat dieksekusi tidak ada dalam PATH Anda, untuk menjalankannya Anda harus menentukan folder tempat file tersebut berada. Anda dapat melakukan ini dengan memberikan path lengkap ke file tersebut, tetapi jika file tersebut ada dalam direktori saat ini, dapat Anda gunakan ./sebagai singkatan.

Demikian pula, ../atau hanya ..singkatan untuk direktori di atas yang sekarang.

luar biasa
sumber
17
Seseorang harus memasukkan dalam jawaban mereka mengapa $ PATH tidak mengandung .. Itu karena secara otomatis menggunakan direktori saat ini adalah lubang keamanan. Bayangkan ada orang lain yang membuat program, beri nama lsdan Anda cdke dalam direktori-nya, lalu ketikkanls
Zan Lynx
1
@Zan saya selalu bertanya-tanya ini, terima kasih atas jawaban Anda untuk pertanyaan yang tak seorang pun bertanya, tetapi seseorang harus melakukannya.
crasic
@ZanLynx komentar hebat / tambahan, itu harus diedit menjadi jawaban karena komentar bisa hilang.
NSGaga
15

Setiap direktori di baris perintah memiliki dua "direktori khusus" yang dipanggil .dan ... Ini adalah singkatan untuk, masing-masing, direktori saat ini dan direktori yang berisi direktori saat ini.

Jadi misalnya, cd ./more/directory/namesberarti, "mulai dari direktori saat ini dan lanjutkan di jalan." Demikian pula, perintah itu cd ..berarti, "ubah satu direktori.

Jika Anda ingin nama direktori Anda saat ini, Anda dapat menggunakan pwdperintah. Juga, jika Anda menggunakan -aflag untuk ls, Anda dapat melihat dua direktori khusus ini. Artinya, ls -aakan menampilkan daftar yang dimulai dengan .dan ...

Kris Harper
sumber
tambahan root45 +1 :)
Rinzwind
4

Yang lain sudah menjelaskan apa .dan ..artinya (direktori saat ini dan direktori induk masing-masing). Ini berlaku untuk semua nama jalur.

Ketika Anda membuka terminal, Anda biasanya mulai di direktori home Anda: ~(yang diperluas ke /home/username). Path di bawah ini semuanya setara, menyediakan direktori kerja Anda saat ini adalah /home/username:

  • /home/username
  • .
  • ../username
  • ../../home/username
  • ../../../home/username(direktori induk /masih /)
  • ./././././. (direktori saat ini di direktori saat ini di ...)
  • ./ (Trailing slash diperbolehkan untuk direktori)
  • /home////username/// (dan begitu juga beberapa tebasan)

Jangan tidak bingung ./programdengan . program. ./programmenjalankan file di direktori saat ini dengan set bit eksekusi. . ./programadalah hal bash dan bisa juga ditulis sebagai source ./programyang membaca perintah bash dari programfile di direktori saat ini dan mengeksekusinya di shell saat ini.

Jika Anda bertanya-tanya mengapa Anda bisa menjalankan geditalih-alih /usr/bin/geditdan bukan programbukannya ./programatau /home/username/program, lihat pertanyaan terkait:

Lekensteyn
sumber
3

Ini berarti memulai dari current directory path.

Anggap Anda memiliki yang pathseperti ini:

/usr/ /usr/bin/ /usr/local/bin

dan di dalamnya /usr/bin/ada executable yang disebut yiic.

Jika Anda mengeluarkannya yiicakan memulai yang masuk /usr/bin/.

Dengan mengeluarkan ./yiicAnda memberi tahu sistem untuk melihat ke dalam direktori saat ini untuk eksekusi ini.

Rinzwind
sumber
Ok ... tapi saya masih belum mengerti. Katakanlah saya memiliki di dalam Anda /home/mysuser/dan saya menavigasi ke sana dengan menggunakan cd /home/myuser. Begitu masuk, saya percaya bahwa melakukan hanya yiic, itu harus bekerja karena saya sudah menelepon sementara di direktori itu. Namun dia mengatakan perintah bukan file. Jika saya melakukan hal yang sama, dan saya menggunakan ./ lalu, itu berjalan dengan benar ... Bisakah Anda menjelaskan sedikit lebih banyak?
MEM
@frabjous sebagai menjawab komentar ini juga.
MEM
Nggak! itu akan selalu terlihat di direktif PATH kecuali Anda mengatakannya untuk menggunakan direktori saat ini (dengan menggunakan ./). Lihatlah jawaban user45: .adalah file khusus di dalam folder yang dapat Anda lihat ketika melakukan ls -ladi direktori;)
Rinzwind