「ls」を実行すると電車が来るのはなぜですか?

「ls」を実行すると電車が来るのはなぜですか?

最近、あまり気に入らない奇妙なことに気付きました。

lsを実行すると電車が来る

では、なぜ実行時にトレインが表示されるのでしょうかls? また、これを停止して正常に動作させるにはどうすればよいのでしょうか? これは私が発見したイースターエッグでしょうか? Ubuntu GNOME 15.04 を実行しています。

情報更新:

走ればwhich ls同じ電車に乗ることができますが、走るls -l $(which ls)と別の種類の電車に乗ることになります。

実行してもcommand -v ls何も出力されません。 実行してcommand -v slも何も出力されません。

cowこれはすべて、私が最近インストールした「少し軽くする」と約束されたパッケージ(またはそれに似たもの)と関係がある可能性があります。

答え1

  1. 面白いパッケージを削除するには、

    sudo apt-get purge sl 
    
  2. またはlsで、たとえばエイリアスを確認します。~/.bashrc~/.profile

  3. バイナリをチェックし/usr/games/slて削除する

    sudo rm /usr/games/sl
    
  4. 出力を確認する

    strace sl |& grep execve
    strace ls |& grep execve
    

    3 番目のポイントが成功しなかった場合。

  5. そして、今後は、説明文で「少し軽くする」と謳っているものは絶対にインストールしないでください。;)

答え2

一般的に、コマンドの先頭に \ を付けると、そのコマンド実行のインスタンスに対してのみエイリアスを無効にすることができます。例:

[2023]$ エイリアス ls
エイリアス ls='ls -F -Chs --color=tty'
[2024]$ ls
合計 140K
4.0K bin/ 0 ダウンロード@ 0 prog.git@
...

[2025]$ \ls
bin ダウンロード doc.git freertos.git prog.git tmp
...

したがって、先頭に「\」を付けてlsを試すことをお勧めします。

次に、フルパスで ls コマンドを直接実行してみます。

/bin/ls

次に、/bin/lsコマンドを実行します。

また、あなたの進路を確認してください。

$PATHをエコーする
/bin が最初のエントリであることを確認してください。
$PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin:usr/local/sbin:/usr/local/bin

しかし、削除するとcow役立つと信じています。

関連情報