Как я могу настроить отдельную среду bash с использованием только утилит GNU в OS X?

Нет, начиная с операций Вы описываете, все требуют рабочего X-сервера. Необходимо рассмотреть создание объекта автоматического запуска для них.

4
13.04.2017, 15:37
2 ответа

Во-первых, это гораздо больше, чем просто coreutils . Эквивалент BSD GNU findutils также совершенно другой , практически все команды, связанные с динамической компоновкой , отличаются и т. Д.

И затем кроме того, вам придется иметь дело с различиями в версиях: OS X по-прежнему поставляет много старого программного обеспечения, которое остается на GPL2 вместо GPL3, например, Bash 3.x вместо Bash 4.x. Автоинструменты также часто устарели по сравнению с передовыми дистрибутивами Linux.

Ответ на основную часть вашего вопроса: «Конечно, а почему бы и нет?» Вы можете использовать Homebrew для установки всех этих альтернативных инструментов GNU, а затем поместить $ (brew --prefix coreutils) / libexec / gnubin и / usr / local / bin сначала в ПУТЬ , чтобы убедиться, что они найдены первыми:

export PATH="$(brew --prefix coreutils)/libexec/gnubin:/usr/local/bin:$PATH"

Если по какой-то причине brew устанавливает пакет в другое место, также включите его в PATH переменная.

Если вы предпочитаете заменить только несколько пакетов, хитрость связана со всеми изменениями имен. Каждый раз, когда brew устанавливает программу, которая уже реализована в основной ОС, например, при установке GNU coreutils , она называет свою версию по-другому, так что вы можете запускать любую из них, в зависимости от ваших потребностей. в то время.Вместо того, чтобы переименовывать все эти символические ссылки¹, я рекомендую вам исправить все это с помощью уровня косвенности:

$ mkdir ~/linux
$ cd ~/linux
$ ln -s /usr/local/bin/gmv mv
...etc for all the other tools you want to rename to cover OS versions
$ export PATH=$HOME/linux:$PATH
...try it out...

Когда вы будете довольны своей новой средой, вы можете поместить export PATH = $ HOME / linux: $ PATH в ваш ~ / .bash_profile .

Это касается интерактивного использования, либо с массовой заменой, либо с заменой одного приложения.

К сожалению, это не решает полностью проблему сценариев оболочки, потому что иногда сценарии оболочки получают собственное окружение, например, при запуске из cron . В этом случае вы можете изменить PATH в верхней части каждого скрипта кроссплатформенной оболочки:

#!/bin/bash
export PATH="$HOME/linux:$(brew --prefix coreutils)/libexec/gnubin:/usr/local/bin:$PATH"

Вам не нужно делать его условным, поскольку он просто предлагает оболочке другое место для поиска программы.


Сноски

  1. например. / usr / local / bin / gmv ../ Cellar / coreutils / $ version / bin / gmv

Похожие сообщения

  1. Как заменить утилиты Mac OS X утилитами ядра GNU ?
  2. Установить и использовать инструменты командной строки GNU в Mac OS X
7
27.01.2020, 20:52

Поместив этот ответ здесь, вы бы попробовали, если GNU невозможно запустить изначально вместе с freebsd без использования виртуальной машины или дуэльной загрузки.

Как уже говорилось, homebrew не может установить все ядра GNU и исправить меня, если я ошибаюсь, но вы также хотите иметь возможность хранить все свои файлы в одном месте (один механизм)

Если у вас подключен дополнительный компьютер в Интернет (возможно, Raspberry Pi?), вы можете использовать SSH в механизме Linux с вашего Mac или Если вы хотите использовать X-среду, вы можете использовать x11vnc для использования компьютера Linux на вашем Mac.

Имейте в виду, что если вы используете SSH, вы можете получить доступ только к оболочке входа в систему.

Как создать сервер и клиент SSH

Прежде всего проверьте, запущен ли сервер openssh на вашем Linux-механизме.

$ service ssh status

Если служба запущена, вы получите такой результат.

    ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2015-07-17 16:51:08 NPT; 5h 21min ago
  Process: 1669 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 615 (sshd)
   CGroup: /system.slice/ssh.service
           └─615 /usr/sbin/sshd -D

Если служба не запущена, сначала проверьте, установлен ли openssh

sudo apt-get install openssh

, затем запустите службу

sudo service ssh start

И все готово! (если, конечно, вы не хотите создавать ключи)

Теперь вы можете войти в свой Linux-механизм через SSH как таковой

ssh <USERNAME_ON_LINUX_MECHINE>@<LINUX_HOST_NAME>

Имя хоста Linux - это в основном Внешний IP-адрес этого механизма.

(Конечно, на вашем Mac также должен быть установлен openssh)

Вот полное руководство по SSH-туннелированию

http://inside.mines.edu/fs_home/gmurray/HowTo/sshNotes.html

Как использовать сервер и клиент x11vnc

Я считаю vnc лучшей формой SSH (мое личное мнение) VNC легче установить, чем SSH

Вот ссылка на arch-wiki для настройка vnc https://wiki.archlinux.org/index.php / X11vnc

  • установка x11vnc

    sudo apt-get install x11vnc

  • Создайте пароль для своего пользователя:

    x11vnc -storepasswd

  • Если у вас есть установка ssh, вы можете использовать ее для запуска x11vnc, предполагая, что вы уже вошли в систему, но не забудьте указать ему использовать ваш файл паролей:

    x11vnc -usepw

Предполагая, что вы используете lightdm для входа в систему, вы можете решить эту проблему, вы можете запустить x11vnc с помощью команды :

sudo x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw
-1
27.01.2020, 20:52

Теги

Похожие вопросы