Можно использовать эту функцию помощника, которая позволяет Вам получить высоту Строки состояния на iOS и Android. Для iOS вычисление сделано для получения другой высоты StatusBar, когда> = iPhone X (с меткой) используется.
import { Dimensions, Platform, StatusBar } from 'react-native';
const X_WIDTH = 375;
const X_HEIGHT = 812;
const XSMAX_WIDTH = 414;
const XSMAX_HEIGHT = 896;
const { height, width } = Dimensions.get('window');
export const isIPhoneX = () => Platform.OS === 'ios' && !Platform.isPad && !Platform.isTVOS
? width === X_WIDTH && height === X_HEIGHT || width === XSMAX_WIDTH && height === XSMAX_HEIGHT
: false;
export const StatusBarHeight = Platform.select({
ios: isIPhoneX() ? 44 : 20,
android: StatusBar.currentHeight,
default: 0
})
Переименование ( mv
) атомарная операция; создание новой символической ссылки нет (удалите старую символическую ссылку; создайте новую). Поэтому вам следует использовать mv
:
$ ln -s new current_tmp && mv -Tf current_tmp current
Вот сообщение в блоге , в котором обсуждается это. Кроме того, если вы беспокоитесь о том, что произойдет, почему бы сначала не попробовать это на некритичной символической ссылке?
Похоже (со страницы руководства) ln -f
отключает символическую ссылку перед созданием новой, что означает, что mv
- лучший вариант для этого.
Я бы, однако, настоятельно рекомендовал вместо связывания / bin / sh
с bash
. Многие сценарии используют:
#!/bin/sh
и написаны в предположении, что оболочка является классической оболочкой Борна. Если бы вместо этого был запущен bash
, вы могли бы легко получить неясную несовместимость между тем, что предполагает сценарий sh
, и тем, что на самом деле делает bash
. Их будет практически невозможно отследить.