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