Этот совет взят (от Павла Риццо): Kali Linux 2.0 не работает, не загружается
Похоже, что один способ обойти эта проблема заключается в том, чтобы установить lightdm, выполнив переход в оболочку (tty2 - ctrl + alt + F2) и набрав:
sudo apt-get install lightdm
Выбор lightdm по умолчанию, а затем появляется
sudo reboot
, чтобы вызвать экран входа в kali в качестве графического интерфейса пользователя.
Что ж, вы можете опустить символ точки для папок, если хотите, но оба в порядке
cd ./bar
или
cd bar
эквивалентны - но вы согласен, второй удобнее.
Если вы хотите выполнить свой файл bar.txt
(который может выполняться, например, с помощью chmod 755
), вам необходимо использовать индикатор ./
./ bar.txt
выполнит сценарий
bar.txt
ничего не сделает
cat bar.txt
или cat ./bar.txt
сделают то же самое.
надеюсь, что это поможет :)
РЕДАКТИРОВАТЬ: если вы хотите получить дополнительную информацию о том, почему ./ необходим для запуска скрипта, просто следуйте: https://stackoverflow.com/questions/6331075/why- do-you-need-dot-slash-before-script-name-to-run-it-in-bash
Потому что в Unix, как правило, текущий каталог не находится в $ PATH. Когда вы введите команду, оболочка ищет список каталогов, как> указано в переменной PATH. Текущего каталога нет в этом списке.
(@ cnicutar)
В местах, где ожидается путь к файлу, ./foo
эквивалентен foo
. Есть только несколько мест, где полезно писать ./foo
.
Запись ./foo
полезна, когда ожидается не обязательно путь, но, возможно, имя файла, которое может быть найдено в пути поиска. Наиболее распространенным случаем является вызов исполняемой команды. Исполняемые программы ищутся в каталогах, перечисленных в переменной PATH
, но этот поиск выполняется только в том случае, если заданное имя команды не содержит слэша. Так ls
вызывает команду ls
, найденную в PATH (обычно /bin/ls
), тогда как ./ls
вызывает исполняемую программу ls
в текущем каталоге. В более общем случае запись ./foo
также обходит любой псевдоним, функцию или встроенный модуль оболочки с именем foo
.
Еще одно применение префикса ./
- избежать проблем с именами файлов, начинающимися с некоторых специальных символов. В частности, когда вы передаете имя файла в качестве аргумента команде, в большинстве случаев команда допускает варианты, начинающиеся с -
. Если имя файла поступает из переменной, вы не можете быть уверены, что имя файла не начинается с -
. Запись "./$filename"
вместо "$filename"
гарантирует, что оно не будет неправильно истолковано как опция, если начинается с -
. Однако это работает, только если $filename
является относительным путем (т.е. не начинается с /
). Другой более общий метод защиты имен файлов - поместить их после --
в командной строке: mycommand -- "$filename"
(--
условно указывает, что следующие за ним аргументы не являются опциями) (однако это не всегда работает в одном конкретном случае: если $filename
является --
, многие команды рассматривают это как "стандартный ввод"). По этой теме см. также Почему мой сценарий оболочки захлебывается пробелами или другими специальными символами? и Последствия для безопасности, если забыть заключить переменную в кавычки в оболочках bash/POSIX