Відповіді:
Для файлів даних це не має значення - обидва твердження будуть посилатися на файл даних у вашому поточному каталозі. (Наприклад, cat filename
і cat ./filename
семантично однакові.)
Це вже інша історія, якщо ім'я файлу, про яке йде мова, відноситься до виконуваного файлу , тобто є першою (або навіть єдиною) річчю, яку ви вводите в командному рядку. ./filename
шукатиме виконуваний файл у вашому поточному каталозі та більше ніде. filename
з іншого боку, буде оцінювати змінну середовища PATH
та шукати filename
в кожному каталозі, що зберігається в ній (який може містити або не містити поточний каталог).
./filename
(або будь-який інший /path/to/filename
), таким чином, бажано, коли ви хочете виконати певний виконуваний файл, а не перший, знайдений у вашому PATH.
Якщо ви запускаєте програму, filename
говорить запустити перший, знайдений у вашому, $PATH
а другий - запустити цей у поточному каталозі.
Якщо ви використовуєте це ім'я файлу як аргумент для програми, як в, do_something filename
або do_something ./filename
тоді вони означають те саме.
Ви маєте на увазі виконання команд, правда?
Існує змінна середовище, PATH
яка містить деякі системні каталоги, розділені крапкою з комою. При введенні command
система виглядає в цих каталогах у тому порядку, в якому вони вказані, щоб знайти виконуваний файл з ім'ям <command> Якщо він знайде його, він намагається виконати його. Ви можете побачити свій PATH через echo $PATH
в bash. Наприклад:
$ echo $ PATH
/ sbin: / bin: / usr / sbin: / usr / bin: / usr / ігри: / usr / local / sbin: / usr / local / bin: / home / ivanatora / bin: / usr / local / kde4 / bin: / usr / local / kde4 / bin
Під час введення ./filename
ви вказуєте точний шлях: поточний каталог. Ви можете бачити, що поточний каталог рідко знаходиться у вашому $ PATH (з міркувань безпеки). Отже, якщо ви хочете виконати файл з поточного каталогу, ви використовуєте ./filename
.
Щоб виконати файл шляхом його шляху (особливо якщо він не знаходиться в $ PATH), ви також можете ввести <path>/file
:
/ sbin / ifconfig
Виконана безпека є основною причиною цієї різниці.
Ви не хочете . (теперішній робочий каталог або PWD) на вашому шляху, тому що хтось може запустити http://en.wikipedia.org/wiki/Trojan_horse_%28computing%29 такий важливий виконуваний файл, як ps або ls, у вашому PWD і обдурити вас, подаючи погані дані.
Це залежить від того, в яких обставинах ви його використовуєте.
Як аргумент, наприклад, "ім'я файлу програми", це залежить від програми, але вони, як правило, однакові.
Як ім'я програми, наприклад "аргументи назви файлів", тоді "аргументи імені файлу" будуть шукати PATH для пошуку двійкового файлу, а "./файли аргументів" використовуватимуть програму в поточному каталозі. Це, очевидно, корисно, якщо. не в PATH, але також корисно використовувати цей, навіть якщо. стоїть на шляху, можливо тому, що він відповідає попередньому запису.