Каково различие между который и где

Я закончил тем, что собрался с iptables в соответствии с Linux выполнить это.

Поскольку, передача IP должна быть включена:

echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf

И установленный следующие правила:

iptables -F -t nat
# flush the NAT Table.
iptables -t nat -P INPUT DROP
# set the input chain on the NAT table to DROP by default. 
# This way any traffic not allowed by defining a source address gets dropped.
# If you don't provide a -s address below it will allow all hosts from anywhere
# to reach the inside address via the outside ip. 

iptables -t nat -A PREROUTING -s 10.0.0.1 -d 10.0.0.2 \
         -j DNAT --destination-address 192.168.1.3 
# define the source and destination of the traffic allowed through.
# Change the dest address to our inside host. 

iptable -t nat -A INPUT -s 192.168.0.0/24 -J ALLOW
# Drop all traffic on sourcing from inside subnet. 
# This won't apply to traffic that matches the rule above
# as the source address will change in the next rule. 

iptables -t nat -A POSTROUTING -d 192.168.1.3 \
         -j SNAT --source-address 192.168.1.4
# here is the insert magic. Change the source address of any traffic destined
# for our inside host to our vip or owned inside address.
# This way the traffic is routed back to us at the FW. 
16
05.02.2013, 23:26
1 ответ

zsh одна из нескольких оболочек (другое быть tcsh (which порожденный как a csh сценарий для csh пользователи, которые также имели его ограничение, tcsh сделанный этим встроенное как улучшение)), где which делает что-то разумное, так как это - встроенная оболочка, но так или иначе Вы или Ваша ОС (через некоторых rc файл), повредил его путем замены его вызовом к системе which команда, которая не может сделать ничего разумного надежно, так как это не имеет доступа к интернам оболочки так, не может знать, как та оболочка интерпретирует название команды.

В zsh, всем из which, type, whence и where встроенные команды, которые все используются для обнаружения о том, каковы команды, но с различными выводами. Они - все там по исторической причине, можно получить все их поведения с различными флагами к whence команда.

Можно получить детали того, что каждый делает путем выполнения:

info -f zsh --index-search=which

Или введите info zsh, затем поднимите индекс с i, и введите встроенное имя (завершение доступно).

И избегайте использования /usr/bin/which. Нет никакой оболочки в наше время где это which необходим. Как Timothy говорит, используйте встроенное, что Ваша оболочка предусматривает это. Большинство оболочек POSIX будет иметь type команда, и можно использовать command -v только получить путь команды (хотя оба type и command -v являются дополнительными в POSIX (но не Unix, и больше в LSB), они доступны в большинстве, если не все подобные Границе оболочки Вы, вероятно, будете когда-либо сталкиваться).

(BTW, это похоже /usr/bin появляется дважды в Вашем $PATH, Вы могли добавить a typeset -U path к Вашему ~/.zshrc)

11
27.01.2020, 19:49
  • 1
    Это подошло в более раннем вопросе также. Для расширения этой точки необходимо всегда использовать оболочку, созданную в команде, где каждый существует. Таким образом в ударе, используйте "тип" вместо "который". –  Tim B 05.02.2013, 15:03
  • 2
    Превосходный ответ и спасибо за ту подсказку также. –  nikhil 05.02.2013, 18:43

Теги

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