Нет, начиная с операций Вы описываете, все требуют рабочего X-сервера. Необходимо рассмотреть создание объекта автоматического запуска для них.
Во-первых, это гораздо больше, чем просто 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"
Вам не нужно делать его условным, поскольку он просто предлагает оболочке другое место для поиска программы.
Сноски
/ usr / local / bin / gmv
→ ../ Cellar / coreutils / $ version / bin / gmv
Похожие сообщения
Поместив этот ответ здесь, вы бы попробовали, если GNU невозможно запустить изначально вместе с freebsd без использования виртуальной машины или дуэльной загрузки.
Как уже говорилось, homebrew не может установить все ядра GNU и исправить меня, если я ошибаюсь, но вы также хотите иметь возможность хранить все свои файлы в одном месте (один механизм)
Если у вас подключен дополнительный компьютер в Интернет (возможно, Raspberry Pi?), вы можете использовать SSH в механизме Linux с вашего Mac или Если вы хотите использовать X-среду, вы можете использовать x11vnc для использования компьютера Linux на вашем Mac.
Имейте в виду, что если вы используете 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
Я считаю 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