unit – Awake and Start is not called for the script

I have a complex scenario that I have reduced to the following problem:

I have a cube in my Unity scene. This cube contains the following script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

Public class MainScript: MonoBehaviour
{
public OtherScript TheOtherScript;

empty public OnGUI ()
{
if (GUI.Button (new Rect (0, 0, 50, 50), "Load something"))
{
this.TheOtherScript.LoadFile ();
}
}
}

The script "OtherScript" looks like this:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

OtherScript public class: MonoBehaviour
{
private channel _sPath;

public empty Awake ()
{
_sPath = Application.persistentDataPath + "/somefilename.dat";
}
public void Start ()
{
_sPath = Application.persistentDataPath + "/somefilename.dat";
}

public void LoadFile ()
{
if (_sPath == null)
{
Debug.Break ();
}
// do something with _sPath
}
}

I created an empty GameObject in my scene and added a script:

enter the description of the image here

I then put a reference to dump GameObject into the "OtherScript" location of the cube:

enter the description of the image here

The problem I am experiencing is that the startup / wake up of "TheOtherScript" was not called when this button is pressed:

                if (GUI.Button (new Rect (0, 0, 50, 50), "Load something"))
{
this.TheOtherScript.LoadFile ();
}

Neither Awake nor Start are called in this script.

What event can I react to in this case for initialization?