私の.profile、PATH="$HOME/.local/lib:$HOME/.local/bin:$HOME/.node_modules/bin:$HOME/.cargo/bin:$HOME/local/bin:/usr/bin:$PATH"
私の.zshrcにminicondaパスコンテンツ(export PATH = "/ home / user / miniconda3 / bin:$ PATH")がありましたが、削除しましたが、最後にロードされたようです。私はそれが問題だとは思わない。しかし、私のシェルでは次のようになります。
/sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/opt/cuda/bin:/opt/cuda/nsight_compute:/opt/cuda/nsight_systems/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/var/lib/snapd/snap/bin
たぶん、いくつかのアーチパッケージがこれらのパスを設定しますか?しかし、私の道にsbinを設定するものは何ですか?私は根ではありません。
また、私の.profileのPATHコマンドが選択されていないため、エクスポートしようとしましたが、エクスポートされませんでした。私はそれがうまくいったと確信しています。 (編集:zshは.zprofileのみをソースとして使用しているようです。)
答え1
珍しい点はlib
目次だ。sbin
過去数年間、ますます多くのLinuxディストリビューションでそのディレクトリにディレクトリsbin
シンボルbin
を作成しているため、これがあるのが一般的です。たとえば、私のアーチでは:
$ ls -ld /sbin /usr/sbin
lrwxrwxrwx 1 root root 7 Jan 31 20:51 /sbin -> usr/bin
lrwxrwxrwx 1 root root 3 Jan 31 20:51 /usr/sbin -> bin
これはアーチ文書:
Arch Linux は、以下を使用してオペレーティングシステムのファイルシステム階層に従います。システムサービスマネージャ。バラよりファイル階層(7)各ディレクトリとその名前の説明。具体的には、、およびはの
/bin
シンボリック/sbin
リンク/usr/sbin
、および/usr/bin
は/lib
の/lib64
シンボリックリンクです/usr/lib
。
sをそのsにシンボリックリンクしてbin
マージしてディレクトリを作成することがますます一般化されています。 freedesktop.orgの人々はこれを示しています。sbin
sbin
bin
ここ、以下の主な主張のいくつかを再現します。
互換性:必須
- 他のUnix/Linuxとの動作互換性が改善されました。
/usr
マージ後、すべてのバイナリはそれぞれおよびで使用できます/bin
(シンボリックリンクがそれぞれへのシンボリックリンクになったため/usr/bin
)。これは、他のUnixまたは他のLinux用に作成され、ディストリビューションに移植されたスクリプト/プログラムが、呼び出されたバイナリのファイルシステムパスを変更する必要がないことを意味します。それ以外の場合、苦情の主な原因となる可能性があります。そして(それぞれand)全く同じです。/sbin
/usr/sbin
/bin
/usr/bin
/sbin
/usr/sbin
/usr/bin
/bin
/usr/sbin
/sbin
- 他のUnix(特にSolaris)スキンとの互換性の向上:現在、主な商用Unixの実装はOracle Solarisです。 Solaris は
/usr
Solaris 11 で同じマージを完了しました。 Linuxでも同じ変更を行うことで、基本的なUnix実装との違いを最小限に抑え、Solarisの移植性を簡素化しました。- GNUビルドシステムとの互換性の向上:Linuxソフトウェアの最大の部分は、Linux固有の
/usr
パーティション化を認識しないGNU autoconf / automake(GNU autotoolsなど)を使用して構築されます。分割を維持するには、/usr
アップストリームビルドシステムとデプロイパッケージで重要なプロジェクト固有の処理が必要です。マージすると、/usr
これは不要になり、パッケージをLinuxに移植する方が簡単になります。- 現在のアップストリーム開発との互換性の向上:Linuxディストリビューションとアップストリーム開発の違いを最小限に抑えるために、
/usr
マージが重要です。[。 。 .]
互換性を超えて
/ usrマージの主な利点は、システムの複雑さが減少することです。新しいファイルシステム階層がより単純化され、ベンダーが提供するオペレーティングシステムリソース(読み取り専用、変更不可能)とユーザーリソースがより明確になります。階層の複雑さが減少するにつれて、.specファイルの分割処理の問題がなくなり、パッケージングがより簡単になります。
マージされたディレクトリ/usrには、ベンダーが提供するほとんどすべてのオペレーティングシステムリソースが含まれており、オペレーティングシステムのスナップショットに関連する多くの新機能と、ネットワーク共有または単一ホストで複数のゲストを実行するためのエンタープライズ環境オプションが提供されます。ベンダーが提供する静的オペレーティングシステムリソースは単一の場所で排他的であり、システム全体または各サービスに対して個別に読み取り専用に簡単に設定できます。現在、複数のディレクトリにわたってランダムなツールが断片化されているため、この作業の大部分は難しくても不可能です。
ベンダーによって提供されたすべてのオペレーティングシステムリソースを単一のディレクトリ/ usrに配置すると、アトミックに共有でき、そのリソースのスナップショットがアトミックになり、ファイルシステムを単一単位で読み取り専用にすることができます。
あなたの設定に関しては、PATH
あなたの場合は/usr/local/sbin
デフォルトファイルによって追加されます/etc/profile
。
$ grep sbin /etc/profile
append_path '/usr/local/sbin'
/sbin
追加する場所や追加する場所が見つかりません/usr/sbin
。奇妙です。私が考えることができるどんな文書にも言及されていないようです。bib2
次のパスを使用してシステムに新しいユーザーを作成しました。
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin
ただし、以下を除いて、/usr/local/sbin
他のsbin
ディレクトリは明らかな場所には記載されていません。
$ grep -HR sbin ~/.bashrc ~/.profile ~/.bash_profile \
~/bash.login ~/.bash_aliases /etc/bash.bashrc /etc/profile \
/etc/profile.d/ /etc/environment /etc/security/pam_env.conf \
/etc/login.defs 2>/dev/null
/etc/profile:append_path '/usr/local/sbin'
/etc/login.defs:ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/bin
/etc/login.defs:ENV_PATH PATH=/usr/local/sbin:/usr/local/bin:/usr/bin
/etc/login.defs:#USERDEL_CMD /usr/sbin/userdel_local
したがって、これらは他の場所で定義する必要がありますが、どこにも見つかりません。