En los shells POSIX, .
es un componente especial, por lo que su falla hace que el shell salga (en algunos shells como bash
, solo se hace cuando está en modo POSIX ).
Lo que se considera un error depende del shell. No todos salen cuando se produce un error de sintaxis al analizar el archivo, pero la mayoría sale cuando no se puede encontrar o abrir el archivo de origen. No sé de ninguno que saldría si el último comando en el archivo de origen regresara con un estado de salida no -cero (a menos que la opción errexit
esté activada, por supuesto ).
Aquí haciendo:
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
Es un caso en el que desea buscar el archivo si está allí, y no lo hace si no está (o está vacío aquí con-s
).
Es decir, no debe considerarse un error (error fatal en shells POSIX )si el archivo no está allí, ese archivo se considera un archivo opcional.
Todavía sería un (error fatal )si el archivo no fuera legible o fuera un directorio o (en algunos shells )si hubiera un error de sintaxis al analizarlo, lo que sería un error real condiciones que deben ser reportadas.
Algunos dirían que hay una condición de carrera. Pero lo único que significa sería que el shell saldría con un error si el archivo se elimina entre [
y .
, pero diría que es válido considerar que este archivo de ruta fija es un error. desaparecer repentinamente mientras se ejecuta el script.
Por otro lado,
command. "$NVM_DIR/nvm.sh" 2> /dev/null
donde command
¹ elimina el atributo especial del comando .
(para que no salga del shell en caso de error )no funcionaría como:
.
pero también los errores de los comandos ejecutados en el archivo fuente Otras sintaxis comunes (consulte, por ejemplo, grep -r /etc/default /etc/init*
en los sistemas Debian para los scripts de inicio que aún no se han convertido a systemd
(donde EnvironmentFile=-/etc/default/service
se usa para especificar un archivo de entorno opcional en su lugar ))incluyen:
[ -e "$file" ] &&. "$file"
Verifique que el archivo esté allí, aún así búsquelo si está vacío. Sigue siendo un error fatal si no se puede abrir (aunque esté allí, o estuvo allí ). Puede ver más variantes como[ -f "$file" ]
(existe y es un regular archivo ),[ -r "$file" ]
(es legible ), o combinaciones de ellas.
[ ! -e "$file" ] ||. "$file"
Una versión ligeramente mejor. Deja más claro que el archivo que no existe es un caso OK. Eso también significa que $?
reflejará el estado de salida del último comando ejecutado en$file
(en el caso anterior, si obtiene 1
, no sabe si es porque $file
no existía o si ese comando falló ).
command. "$file"
Espere que el archivo esté allí, pero no salga si no se puede interpretar.
[ ! -e "$file" ] || command. "$file"
Combinación de lo anterior :está bien si el archivo no está allí, y para shells POSIX, se informan fallas al abrir (o analizar )el archivo pero no son fatales (que pueden ser más deseable para~/.profile
).
¹ Nota :Sin embargo, en zsh
no puede usar command
de esa manera a menos que esté en la emulación sh
; tenga en cuenta que en el shell Korn, source
es en realidad un alias para command.
, una variante especial no -de.
Это легко выполнимо.
Узнайте, поддерживает ли ваше устройство кодирования видео протокол DHCP или имеет предопределенный статический адрес.
Если он принимает DHCP, установите пакет DHCP-сервера на свой компьютер с Ubuntu, настройте его для eth0
.
В противном случае настройте статический адрес для eth0
, который находится в той же подсети, что и статический IP-адрес устройства кодирования видео. Убедитесь, что эта подсеть отличается от подсети, которую вы используете на своем маршрутизаторе; re -при необходимости настройте устройство кодирования видео или маршрутизатор.
Настройте свой компьютер с Ubuntu так, чтобы в противном случае оставить eth0
в покое и «подключаться к Интернету» только с eth1
.
Убедитесь, что переадресация отключена на вашем компьютере с Ubuntu.(cat /proc/sys/net/ipv4/ip_forward
должен дать вам0
).
Подробная информация о том, как выполнить каждый из этих шагов, зависит от того, какой именно ваш компьютер с Ubuntu использует (systemd? сетевой менеджер? ), возможно, вам придется прочитать документацию по ним или поискать в Интернете.