Главным образом семантика. В то время как объединение Ваших командных строк в переменные полезно для сценариев целей, это не хорошо для искажения. Одной видимой причиной является завершение - в то время как различные сценарии завершения, как bash_completion
смогший для контакта с псевдонимами (который печально никогда, оказывалось, не был моим случаем) заставляя их предположить то, что переменные являются растяжимыми к командам, могло сделать его так или иначе грязным.
Вторая причина alias
позволяет Вам делать быстрые клавиши, не используя волшебной команды, ни символа как $
выполнять их. Таким образом, замена прозрачна, и она позволяет переопределять настройки по умолчанию для некоторых программ. Один хороший пример ls
, который часто искажается как ls --color=auto
по умолчанию. Пользователи не должны знать что видеть цветной вывод. Некоторый псевдоним дистрибутивов rm
и связанные команды как rm -i
, таким образом, они работают в интерактивном режиме и могут предотвратить случайные удаления.
Переменные, с другой стороны, могут быть полезны для некоторого использования, которое не требует двоичных файлов имитации. Широкий и хороший пример EDITOR
переменная окружения. Это позволяет не только выполнить Вашего любимого редактора, использующего $EDITOR
, но также и делает другие программы (который не может иметь доступа к оболочке) способный выполнить его, беря это - значение от их среды выполнения.
Могли бы быть некоторые другие вещи, о которых я не знаю, но результатом является то же: те команды должны использоваться, поскольку они предназначаются.
Для поиска пакета g++ и способа его установки используется команда command-not-found
. На моей машине Debian я получаю следующий результат:
$ command-not-found g++
The program 'g++' is currently not installed. You can install it by typing:
apt-get install g++
tcsh: command not found
$
Итак, на моем компьютере g++
находится в пакете g++, а не в пакете gcc.
Обнаружена моя собственная ошибка. Это должно было быть # !/bin/bash
. Спасибо @ steeldriver за наконечник
Я обнаружил, что проблема заключается в том, что sshfs пытаются запретить другим пользователям (даже корневым) доступ к моей удаленной файловой системе. Кроме того, доступ к символьным устройствам (таким как /dev/null
) является проблематичным, и, вероятно, не тем, что вы хотите, потому что я полагаю, что, например, piping to /dev/null
будет эффективно отправлять байты по сети.
Это то, что я использую сейчас:
mkdir remoteroot
sshfs remote:/ remoteroot -o allow_other -o kernel_cache #you need to enable user_allow_other in /etc/fuse.conf
sudo mount --bind /tmp/ remoteroot/tmp/
sudo mount --bind /dev remoteroot/dev
sudo mount --bind /sys remoteroot/sys
sudo mount --bind /run remoteroot/run
sudo mount --bind /var/tmp remoteroot/var/tmp
sudo chroot remoteroot
Учтите, что могут возникнуть проблемы с владением файлами, потому что если вы su
к другому пользователю, удаленный конец не будет переключаться на нового пользователя.