Get vector3 from another script

hello. i have problem here:

Script 1

public GameObject bh;
public Vector3 bhp;

void Update()
{

    if (bh == null)
    {
        bh = GameObject.Find("Bh");
    }
    else
    {
        bhp = bh.transform.position;
        Debug.Log(bhp);
    }
}

Script 2

Script1 sc1;

sc1 = GetComponent< Script1 >();

public Vector3 bhp;

public void FixedUpdate()
{
    if(bhp == null)
    {
        bhp =sc1.bhp;
    }
    else
    {
        Debug.Log(bhp);
    }
}

i want script2 get Vector3 bhp, its well done in script1, but script2 always show null or zero(i think its null.)

Do you have the both scripts attached to one GameObject ???
as you are getting script from the same object
sc1 = GetComponent< Script1 >();

and if so why do you think you need to have the two script attached just to access one variable? anyways, If the same script is attached then you must get the Script1 Component in the start or awake method of Script2. Or best option is to assign it through inspector.

Issue could be that you have Script1 as a public variable that’s unassigned in the inspector.