Let's see if this clarifies the situation.
Point $\vec{p}$ is on the plane with normal $\vec{n}_1$ and signed distance $d_1$ from origin, if and only if
$$\vec{p} \cdot \vec{n}_1 - d_1 = 0 \tag{1}\label{G1}$$
In $\mathbb{R}^3$, vector cross product yields a vector that is perpendicular to both vector terms. That is, given
$$\vec{\ell} = \vec{n}_1 \times \vec{n}_2 \tag{2}\label{G2}$$
vector $\vec{\ell}$ is perpendicular to both $\vec{n}_1$ and $\vec{n}_2$ (or a zero vector). So, if $\vec{n}_1$ and $\vec{n}_2$ represent the normals of two planes, then $\vec{\ell}$ is parallel to both planes (or a zero vector, if $\vec{n}_1 \parallel \vec{n}_2$), and is therefore parallel to the plane intersection line.
Therefore, we can describe the plane intersection line (when the two planes do intersect, i.e. are not parallel to each other) as points $\vec{p}$,
$$\vec{p} = \vec{\ell}_0 + \lambda \vec{\ell} = \vec{\ell}_0 + \lambda \left( \vec{n}_1 \times \vec{n}_2 \right) \tag{3}\label{G3}$$
where $\lambda$ is the free parameter ($\lambda \in \mathbb{R}$), and $\vec{\ell}_0$ is a point on the line of intersection of two planes.
The direction cosines of this line are given by
$$\hat{\ell} = \frac{\vec{\ell}}{\left\lVert\vec{\ell}\right\rVert} \tag{4}\label{G4}$$
but because its magnitude only changes the scale of $\lambda$, and $\lambda$ covers all real values, there is no particular need to normalize the direction vector; you can instead consider (the unnormalized) $\vec{\ell}$ as the direction coefficients: similar to direction cosines, but scaled by some arbitrary nonzero real (the magnitude of $\vec{\ell}$, i.e. $\lVert\vec{\ell}\rVert$).
Similarly, $\vec{\ell}_0$ may be anywhere on the line, as it only fixes the point where $\lambda = 0$; but it too can be freely chosen, without affecting the actual line at all.
To find a point on the intersection of two planes, with $\vec{\ell} = (\ell_x, \ell_y, \ell_z)$, we immediately know that:
If $\ell_x \ne 0$, the line will intersect $x = \chi$ (where $\chi$ is any real constant, $\chi \in \mathbb{R}$).
If $\ell_x = 0$, the line has constant $x$.
If $\ell_y \ne 0$, the line will intersect $y = \gamma$ (where $\gamma$ is any real constant, $\gamma \in \mathbb{R}$).
If $\ell_y = 0$, the line has constant $y$.
If $\ell_z \ne 0$, the line will intersect $z = \zeta$ (where $\zeta$ is any real constant, $\zeta \in \mathbb{R}$).
If $\ell_z = 0$, the line has constant $z$.
When $\vec{\ell} = \vec{0}$ (i.e., $\ell_x = \ell_y = \ell_z = 0$), the two planes are parallel, and do not intersect. Therefore, at most two components of $\vec{\ell}$ can be zero, for the two planes to intersect (and the line to exist).
In other words, a nondegenerate line (one with $\vec{\ell} \ne \vec{0}$), will always have at least one nonzero component.
Let's see what an algorithm for calculating the intersection between planes $\vec{n}_1$, $d_1$ and $\vec{n}_2$, $d_2$ would look like. We initially only know
$$\vec{n}_1 = \left[ \begin{matrix} x_1 \\ y_1 \\ z_1 \end{matrix} \right] ,\quad \vec{n}_2 = \left[ \begin{matrix} x_2 \\ y_2 \\ z_1 \end{matrix} \right]$$
and that $x_1, y_1, z_1, d_1 \in \mathbb{R}$, $x_2, y_2, z_2, d_2 \in \mathbb{R}$.
First we find the direction vector (using $\eqref{G2}$):
$$\vec{\ell} = \left[\begin{matrix}\ell_x \\ \ell_y \\ \ell_z \end{matrix} \right] = \vec{n}_1 \times \vec{n}_2 = \left[ \begin{matrix} y_1 z_2 - z_1 y_2 \\ z_1 x_2 - x_1 z_2 \\ x_1 y_2 - y_1 x_2 \end{matrix} \right]$$
If $\ell_x = \ell_y = \ell_z = 0$, the two planes are parallel, and do not intersect.
Otherwise, if $\ell_x \ne 0$, we can find a point $\vec{\ell}_0 = \left[\begin{matrix} x_0 \\ y_0 \\ z_0 \end{matrix}\right]$ on the intersection line using $x_0 = 0$ in the two plane equations $\eqref{G1}$:
$$\left\lbrace\begin{aligned}
x_0 &= 0 \\
x_0 x_1 + y_0 y_1 + z_0 z_1 - d_1 &= 0 \\
x_0 x_2 + y_0 y_2 + z_0 z_2 - d_2 &= 0 \\
\end{aligned}\right.$$
which has exactly one solution; and similarly for the two other Cartesian coordinate axes:
If $\ell_x \ne 0$, then $\left\lbrace\begin{aligned}
x_0 &= 0 \\
y_0 &= \displaystyle \frac{d_1 z_2 - d_2 z_1}{y_1 z_2 - y_2 z_1} \\
z_0 &= \displaystyle \frac{y_1 d_2 - d_1 y_2}{y_1 z_2 - y_2 z_1} \\
\end{aligned}\right.$
Otherwise,
If $\ell_y \ne 0$, then $\left\lbrace\begin{aligned}
x_0 &= \displaystyle \frac{d_1 z_2 - d_2 z_1}{x_1 z_2 - x_2 z_1} \\
y_0 &= 0 \\
z_0 &= \displaystyle \frac{x_1 d_2 - x_2 d_1}{x_1 z_2 - x_2 z_1} \\
\end{aligned}\right.$
Otherwise,
$\ell_z \ne 0$, and $\left\lbrace\begin{aligned}
x_0 &= \displaystyle \frac{d_1 y_2 - d_2 y_1}{x_1 y_2 - x_2 y_1} \\
y_0 &= \displaystyle \frac{x_1 d_2 - x_2 d_1}{x_1 y_2 - x_2 y_1} \\
z_0 &= 0 \\
\end{aligned}\right.$
Note that the three solutions above for $\vec{\ell}_0 = \left[\begin{matrix} x_0 \\ y_0 \\ z_0 \end{matrix}\right]$ are different points (unless the line intersects with origin, in which case all three yield the same solution, point at origin). This is perfectly acceptable, because it does not matter which point on the line you pick as $\vec{\ell}_0$. So, it is important that you only pick one of the three.
In a computer program, it makes sense to pick the coordinate axis with the largest magnitude component in $\vec{\ell}$; i.e, $x_0 = 0$ if $\lvert\ell_x\rvert\ge\lvert\ell_y\rvert$ and $\lvert\ell_x\rvert\ge\lvert\ell_z\rvert$; $y_0 = 0$ if $\lvert\ell_y\rvert\gt\lvert\ell_x\rvert$, $\lvert\ell_y\rvert\ge\lvert\ell_z\rvert$; and $z_0 = 0$ otherwise ($\lvert\ell_z\rvert\gt\lvert\ell_x\rvert$, $\lvert\ell_z\rvert\gt\lvert\ell_y\rvert$).