Apa perbedaan antara nama file dan ./filename di Linux


Jawaban:


18

Untuk datafile, itu tidak membuat perbedaan - kedua pernyataan akan mereferensikan file data di direktori Anda saat ini. (Misalnya, cat filenamedan cat ./filenamesecara semantik identik.)

Ini cerita yang berbeda jika nama file yang dimaksud merujuk pada yang dapat dieksekusi , yaitu hal pertama (atau bahkan satu-satunya) yang Anda ketikkan pada baris perintah. ./filenameakan mencari yang dapat dieksekusi di direktori Anda saat ini, dan tidak di tempat lain. filename, di sisi lain, akan mengevaluasi variabel lingkungan PATH, dan mencari filenamedi setiap direktori yang tersimpan di dalamnya (yang mungkin atau mungkin tidak termasuk direktori Anda saat ini).

./filename(atau yang lain /path/to/filename) dengan demikian disukai ketika Anda ingin mengeksekusi executable tertentu , bukan yang pertama kali ditemukan di PATH Anda.


6

Jika Anda menjalankan program, filenamekatakan untuk menjalankan yang pertama ditemukan di Anda $PATHdan yang kedua mengatakan untuk menjalankan yang ada di direktori saat ini.

Jika Anda menggunakan nama file itu sebagai argumen untuk suatu program seperti pada do_something filenameatau do_something ./filenamekemudian mereka berarti hal yang sama.


5

Anda mengacu pada eksekusi perintah, bukan?

Ada variabel lingkungan PATHyang berisi beberapa direktori sistem, dibatasi oleh titik koma. Ketika Anda mengetik commandsistem, lihatlah di direktori-direktori ini dalam urutan yang ditentukan untuk menemukan file yang dapat dieksekusi bernama <command> Jika menemukannya, ia mencoba untuk mengeksekusinya. Anda dapat melihat PATH Anda melalui echo $PATHdalam bash. Sebagai contoh:

$ echo $ PATH
/ sbin: / bin: / usr / sbin: / usr / bin: / usr / games: / usr / local / sbin: / usr / local / bin: / home / ivanatora / bin: / usr / local / kde4 / bin: / usr / local / kde4 / bin

Saat Anda mengetik, ./filenameAnda menentukan jalur yang tepat: direktori saat ini. Anda dapat melihat bahwa direktori saat ini jarang ada dalam $ PATH Anda (untuk alasan keamanan). Jadi jika Anda ingin mengeksekusi file dari direktori saat ini, Anda gunakan ./filename.

Untuk mengeksekusi file dengan path-nya (terutama jika tidak dalam $ PATH) Anda juga dapat mengetik <path>/file, seperti:

/ sbin / ifconfig



1

Tergantung pada keadaan apa Anda menggunakannya.

Sebagai argumen, mis. "Nama file program", maka terserah program, tetapi umumnya identik.

Sebagai nama program, misalnya "argumen nama file", maka "argumen nama file" akan mencari PATH untuk menemukan biner, sementara "./filename argumen" akan menggunakan program di direktori saat ini. Ini jelas berguna jika. tidak ada dalam PATH, tetapi juga berguna untuk menggunakan yang ini meskipun. ada di jalur, mungkin karena cocok dengan entri sebelumnya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.