Отключение не сработало, потому что логика Debian / etc / X11 / default-display-manager
отменяет его.
Чтобы сделать текстовую загрузку по умолчанию под systemd (независимо от того, какой дистрибутив на самом деле):
systemctl set-default multi-user.target
Чтобы вернуться к загрузке с графическим интерфейсом,
systemctl set-default graphical.target
я подтвердил, что они работают на моей Jessie VM и Slashback подтвердил это и на Stretch.
PS: На самом деле вам не нужен X-сервер на вашем компьютере для запуска X-клиентов через ssh. X-сервер нужен только там, где есть дисплей (монитор).
Функция, которую вы показываете, напечатает первый аргумент дважды, один раз с добавлением новой строки и без новой строки в конце второго вывода.
. в интерактивной оболочке Bash вы получите что-то вроде этого
user@foo /tmp$ check_host foo
foo
foouser@foo /tmp$
Вывод изprintf
— это здесь, просто не на отдельной строке.
Разница между echo
и printf
заключается в том, что echo
печатает новую строку в конце, даже если вы этого не запрашиваете (вы можете предотвратить это в Bash, используяecho -n
)и printf
больше похожа на функцию printf()
в C, поскольку выводит только то, что вы запрашиваете. Вам нужно будет явно использовать \n
в строке формата printf
, чтобы получить новую строку.
Обратите внимание, что, как правило, эти переменные и подстановку команд следует заключать в кавычки, чтобы предотвратить проблемы с разделением слов. Это, вероятно, не проблема с именем хоста, но если у вас есть значения с пробелами, вам это понадобится.
Так:
check_host() {
echo "$1"
printf "%s\n" "$1"
}
check_host "$(hostname)"
Печать произвольных данных с помощью printf
также должна выполняться через спецификатор формата %s
, как указано выше. В противном случае любые знаки %
в данных интерпретировались бы как printf
.
Также см.:Почему printf лучше, чем echo?