В пользовательской установке по умолчанию, существует только ssh как серверное приложение, установленное, через который можно просто удалить aptitude remove openssh-server
или через любой другой диспетчер пакетов Вы используете.
Ограничение доступа к сети для приложений является трудным. {{ РЕДАКТИРОВАНИЕ: Однако существует теперь Цветок Leopard, разработанный, который кажется, обеспечивает функции, в которых Вы нуждаетесь (брандмауэр для каждого процесса, интерактивный пользовательский интерфейс). }} Посмотрите брандмауэр Для каждого процесса? для получения дополнительной информации о теме. Без использования усложняют решения, можно только ограничить доступ к сети к специальным пользователям через iptables owner
модуль.
Как обычный пользователь Вам не нужен никто harden-*
пакеты. Они или конфликтуют на небезопасных пакетах, которые Вы, вероятно, не установили так или иначе или устанавливаете пакеты защиты, которые являются для нормальных систем, также сложных, чтобы настроить и поддержать - как сетевые системы проникновения.
Вы должны расположить с интервалами после if [
потому что [
на самом деле команда (как test
) который читает, это - аргументы (это может быть интерпретировано оболочкой, но это может быть не). Используя [[
удостоверяется, что внутренняя логика оболочки используется (быстрее, так как никакой новый процесс не запускается). Хотя оболочки могут интерпретировать [
и test
как builtins, эта функция может быть выключена с enable
(и затем новый процесс действительно запускается).
=
оператор сравнения в условных выражениях (и внешний и встроенный) однако, это - также оператор присваивания в другом месте. В то время как test
и =
соответствуйте POSIX, с помощью ==
(распознанный в [[
) кажется, разумный выбор каждый раз, когда каждый не стремится к соответствию POSIX, так как оно приносит немного больше исправности к несоответствию оболочки контекстно-зависимого значения =
.
exit 1
- почему эффективно отбрасывают возвращаемое значение редактора? Или пропустите его полностью или использование exec
заменять сценарий редактором.
#!/bin/bash
editor=$1
if [[ "$1" == "g" ]]; then
exec geany "$file.tex"
else
linha=$(wc -l < "$file.tex")
exec texstudio --line $linha "$file.tex"
fi
if ["$1" = "g"]; then
Вам нужны пробелы внутри [
и ]
, поскольку они анализируются как обычные команды. Действительно, [
обычная команда (который является встроенным в большинстве оболочек).
exit 1
Почему Вы выходите с ошибочным состоянием после выполнения редактора? Статус возврата 0 успехов средств, что-либо еще означает отказ. Необходимо заставить сценарий возвратить то же состояние как редактор. Как записано, можно кончить exit
в целом: когда оболочка достигает конца сценария, это завершает выполнение сценария и возвращает состояние последней команды, которая выполнялась.
Как улучшение, можно использовать exec
встроенный так, чтобы вместо того, чтобы выполнить редактора как подпроцесс, Ваш сценарий завершился и был заменен редактором. (Тот же процесс продолжает бежать, но его кодовые коммутаторы к процессу другой программы.), Но не делают этого, если Вы делаете это функцией и не сценарием!
A case
конструкция была бы более ясна выразить, что Вы основываете свое условное выражение на значении конкретной переменной.
#!/bin/sh
editor=$1 file=$2
case "$editor" in
g) exec geany "$file".tex;;
*)
linha=$(wc -l < "$file".tex)
exec texstudio --line "$linha" "$file.tex";;
esac
fastex g somefile &
, или добавьте a &
(и не помещать exec
) на строке, которая запускает редактора, например. g) geany "$file.tex" & ;;
– Gilles 'SO- stop being evil'
15.01.2013, 00:41
$file
который был определен file=fastex-temp.tex
?
– Sigur
15.01.2013, 00:45
\[?*
(и Вы не изменились IFS
) затем двойные кавычки не необходимы. Но можно ли едва знать, что заранее при записи сценария, итак, почему пропускают их? большое спасибо
– Gilles 'SO- stop being evil'
15.01.2013, 01:04
/bin/sh
/bin/bash
как Вы записали, и Ваш код теперь работает.Спасибо. – Sigur 11.01.2013, 21:52[
действительно берет=
; нет такой вещи как ре присвоения[
. ответ права – Ignacio Vazquez-Abrams 11.01.2013, 21:541.
ложь, и==
даже не определяется POSIX. – jordanm 11.01.2013, 22:47dash
. Это использует функции неPOSIX ([[
), таким образом,/bin/sh
не является правильным. – jordanm 11.01.2013, 22:48