web-dev-qa-db-ja.com

$ PATHが定義されている場所を確認する

最近、Arch-Linuxシステムをインストールしました。入力すると

echo $PATH

それは(とりわけ)私の/home/user/dir内のディレクトリを指しています。どこかに設定したことを覚えています。私はrootユーザーとしても持っているので、~/.bashrcに含めることはできず、/root/.bashrcにも含めることができません。 /etc/profile/etc/bash.bashrcの中も調べましたが、そこにも見つかりませんでした。

それがどこに設定されているかを見つける方法はありますか?

7
Rafael T

/etc内のすべてのファイルでディレクトリを検索してみてください。

Sudo grep -r "/home/user/dir" /etc

-rスイッチは、/home/user/dirとそのサブディレクトリ内のすべてのファイルのコンテンツ/etcgrepで検索します。

から grep(1)-Linuxのマニュアルページ

-dACTION、-directories= ACTION

入力ファイルがディレクトリの場合は、ACTIONを使用して処理します。デフォルトでは、ACTIONはreadです。これは、ディレクトリが通常のファイルであるかのように読み取られることを意味します。 ACTIONがskipの場合、ディレクトリはサイレントにスキップされます。 ACTIONがrecurseの場合、grepは各ディレクトリの下のすべてのファイルを再帰的に読み取ります。これは、-rオプションと同等です。

それが失敗した場合は、検索をallファイルに拡張するだけです。

Sudo grep -r "/home/user/dir" /

または、PATH変数を変更するすべてのファイルを検索することもできます。

Sudo grep -r "PATH=" /
7
Dennis

通常、ユーザーディレクトリをrootとしてグローバルパスに配置することはお勧めできません;)/etc/environmentファイルを確認しましたか?

0
Izzy

@Dennisは私に素敵なアイデアを教えてくれます! /etc内を検索して見つけましたが、別のコマンドを使用しました。彼のコマンドはファイル名のみを検索しているためです(私が理解している限り)。

私が成功したのは

find / -type f -exec grep -i /home/user/dir '{}' \; -print
0
Rafael T