CentOS lsはdpkgを使用します。

CentOS lsはdpkgを使用します。

CentOSバージョン6.9 HPCにユーザーとしてログインしました。コマンドを試みると、次のls結果が表示されます。

/usr/local/bin/ls: 行 96: dpkg: 中断されたコマンドが見つかりません。このスクリプトはUbuntuなどのディストリビューションでのみ機能します。

そのlsファイルを開くと、96行目に次の行があります。

# (internal) The architecture of the local system
arch=$(dpkg --print-architecture)

私はdpkgがDebianであることを知っています。これがCentOSで動作しない理由です。しかし、なぜdpkgがそこにあるのでしょうか?簡単なものをどのように実行しますかls

答え1

質問テキストに示すように、lsコマンドはディレクトリから取得されます/usr/local/bin。これはPATH、そのディレクトリがeg/usr/binおよび変数valueより前に見つかったことを意味します/bin

シェルの起動ファイルで変数の値の順序を変更した場合(おそらく前に/binおよびを追加して)、シェルにコマンドがあると仮定してからを/usr/bin使用しないようにする必要があります。ls/usr/local/binls/bin/usr/bin

PATH=/bin:/usr/bin:$PATH

理由なぜ /usr/local/bin/lsシェルスクリプトです(おそらくUbuntu関連のスクリプトはここにあります。マルウェアではありませんが、lsコマンドとはまったく関係ありません)この例外現象がls実行可能ファイルに制限されているかどうか/usr/local

関連情報