タグ付けされた質問 「path」

PATH(すべて大文字)は、Unixのようなオペレーティングシステム、DOS、OS / 2、およびMicrosoft Windowsの環境変数の名前で、実行可能プログラムが検索される一連のディレクトリを指定します。

7
$ 0には常にスクリプトへのパスが含まれますか?
上部のコメントセクションからヘルプとバージョン情報を印刷できるように、現在のスクリプトをgrepしたいと思います。 私はこのようなことを考えていました: grep '^#h ' -- "$0" | sed -e 's/#h //' しかし、スクリプトがPATHにあるディレクトリにあり、ディレクトリを明示的に指定せずに呼び出された場合はどうなるのだろうと思いました。 特殊変数の説明を検索したところ、次の説明が見つかりました$0。 現在のシェルまたはプログラムの名前 現在のスクリプトのファイル名 スクリプト自体の名前 実行されたときのコマンド これらのいずれ$0も、スクリプトがディレクトリなしで呼び出された場合にの値にディレクトリが含まれるかどうかを明確にしません。最後の1つは、実際にはそうではないことを意味します。 私のシステムでのテスト(Bash 4.1) / usr / local / binにscriptnameという実行可能ファイルを1行echo $0で作成し、別の場所から呼び出しました。 これらは私の結果です: > cd /usr/local/bin/test > ../scriptname ../scriptname > cd /usr/local/bin > ./scriptname ./scriptname > cd /usr/local > bin/scriptname bin/scriptname > cd /tmp …

1
POSIXは標準ユーティリティがPATHにあることを保証しますか?
では「コマンド検索と実行」セクション、POSIX仕様では、それは言うPATH(一部例外あり)を実行するためのユーティリティを見つけたときに検索されます。仕様は、PATHすべての標準ユーティリティが見つかることを保証する値に初期化される場所について言及していますか? または、標準ユーティリティを実行しようとしたときに「コマンドが見つかりません」というエラーが発生しないことを保証するために、次のようなことをする必要がありますか? PATH=$(command -p sh -c 'printf %s "${PATH}"') (ユーティリティのPOSIX仕様をcommand参照)
11 path  posix  standard 

4
Bashパス補完はsudoでどのように機能しますか?
タブパスの補完が機能しない(少なくともUbuntuおよびAFAIK Archでは) sudo mount <whatever> マウントしようとしているISOファイルがにありません/etc/fstab。入力するだけで mount <whatever> 補完が機能します(ただし、ルートではないため、コマンドは失敗します)。どうやらそれsudoを壊すのです。 sudoで補完を機能させるにはどうすればよいですか? それは驚くべきことです sudo umount <whatever> 完成作品。それはどのように達成されますか?調べます/etc/fstabか? 解決策:渡された引数を使用して、/usr/local/binその呼び出しにシェルスクリプトを挿入しますsudo mount ...。sudo邪魔はないので、このスクリプトを呼び出すと補完が機能します。

2
ln -sを使用してコマンドラインショートカットを作成する方法
ターミナルからいつでも開くことができるshファイルを持っています。ターミナルに「スタジオ」と入力し、Androidスタジオを開きたい 私ln -sはこれを行うためにを使用したことを思い出しましたが、忘れてしまい、すでにWebの検索に多くの時間を費やしています。 また、作成されたシンボリックリンクはどのディレクトリに保持されますか? これが私の努力による構文です、コマンドが見つかりません ricardo@debian:~$ ln -s /opt/android-studio/bin/studio.sh studio ricardo@debian:~$ studio bash: studio: command not found


2
「echo $ PATH」と/ etc / pathsの違いは何ですか?
$ PATHをエコーすると、次のようになりUsers/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-toolsます。 これからいくつかのパスを削除したいのですが、コマンドを使用してファイルを開くとvim /etc/paths、次の結果が得られます。 /usr/local/bin /usr/bin /bin /usr/sbin /sbin / etc / pathsファイルは$ PATH変数とは異なりますか?
10 osx  path 

4
「set」というプログラムが実行されないのはなぜですか?
次のような簡単なCプログラムを作成しました。 int main(int argc, char *argv[]) { if (argc != 5) { fputs("Not enough arguments!\n", stderr); exit(EXIT_FAILURE); } そして、私は自分のPATHをetc / bash.bashrcで次のように変更しています: PATH=.:$PATH このプログラムをset.cとして保存し、コンパイルしています。 gcc -o set set.c フォルダ内 ~/Programming/so しかし、電話すると set 2 3 何も起こりません。表示されるテキストはありません。 呼び出す ./set 2 3 期待される結果を与える 以前にPATHに問題があったことはありません。 which set を返します./set。したがって、PATHが正しいようです。何が起こっているのですか?

3
バイナリをどこに配置して、常にパス内にあり、簡単に見つけられるようにする
自分で簡単にインストールしたいバイナリやスクリプトなどをいくつか作成しています(自分のrpmを使用)。誰でもアクセスできるようにしたいので、私の直感は、それらを/ usr / binに置くことです。 PATHを変更する必要はありません しかしながら; 私の実行ファイルは他のすべてのプールから消えます。そこに置いたすべての実行可能ファイルを簡単な方法で見つけるにはどうすればよいですか。私は考えていました: / usr / bin内のサブディレクトリ(これができないことはわかっています。自分の考えを説明するためだけです) 別のディレクトリ(/ opt / myself / bin)と各実行可能ファイルを/ usr / binにリンク(多くの作業) 別のディレクトリ(/ opt / myself / bin)と/ usr / binへのディレクトリのリンク(これは可能ですか?) これを行うための「Linuxに最も準拠した最良の方法」は何でしょうか? 編集:私たちは会社でこれについて議論し、この次善のオプションを思いつきました:/ usr / bin / companyにバイナリを置き、/ usr / binからのシンボリックリンクを付けます。私はこのソリューションに興奮していません(ディスカッションが進行中)

1
「man」ページを検索するためのパスはどのように設定されますか?
manページの検索に使用するパスがどのように設定されているのか、私は困惑しています。「正しいこと」は魔法のように起こっているようです。たとえば、PATHを /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/usr/texbin に /usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/usr/texbin man(に従ってman --path)ページを検索したパスは、 /usr/share/man:/usr/local/share/man:/opt/X11/share/man:/usr/local/git/share/man:/usr/texbin/man に /usr/local/git/share/man:/usr/share/man:/usr/local/share/man:/opt/X11/share/man:/usr/texbin/man どういうわけか、私がデフォルトのGitを「オーバーライド」しているGitのバージョンでは、組み込みGitのドキュメントより前に、そのドキュメントが正しく検出されています。どうですか?
10 path  man 

2
なぜそんなに多くのプログラムがPATHに住んでいるのですか?
少なくとも、デスクトップLinuxについて私を困惑させる1つのことは、ほぼすべてが私のPATHにあるということです。何よりも、私はgnome-character-mapやglchessなどのすべてのデスクトップアプリケーションを意味します。これらには、話すコマンドラインインターフェースがないため、ターミナルから定期的にこれらを起動する場合は考えられません-まれなケースでは、完全なタイプを入力する必要があることによって不便になることは想像できませんパス。乱雑に見えるかもしれませんが、それには理由があるのか​​もしれません。 それでは、なぜないこれが起こるの?パフォーマンスまたは保守性に注目すべき影響はありますか?

2
パスにjarファイルのフォルダを追加する
使用する必要があるJavaツールがあります。ツールは、jarファイルでいっぱいのフォルダーにあります。明らかな理由でこのフォルダーをパスに追加したかったのですが、.bash_profileを編集して$ PATH変数に新しいフォルダーを含め、ソースを指定した後、機能しません。また、ログアウトしてから再度ログインしてみましたが、どちらもうまくいきませんでした。「jarfile .jarにアクセスできません」というエラーメッセージが表示され続ける
10 path  java 

5
スクリプトから絶対パスを見つける
スクリプトで$0は、可能な相対パスを取得します。それを絶対に変換するために、私は理解できないこの解決策を見つけました: abspath=$(cd ${0%/*} && echo $PWD/${0##*/}) 私の問題は、内部の魔法である${0%/*}と${0##*/}。前者はdirnameを抽出し、後者はファイル名を抽出するように見えますが、方法はわかりません。
10 bash  path 

4
現在のパスにあるすべてのファイル/バイナリを一覧表示します
現在のPATH内のすべてのファイル/実行可能バイナリを一覧表示するための「ls -la」スタイルのコマンドを実行する「簡単な」方法はありますか? (私は出力をgrepにパイプして、プレフィックスは不明であるが基本的には「名前」がわかっているコマンドを探すために、bashのオートコンプリート/タブ移動が本質的に役に立たない場合の種類です。したがって、ある種の「逆オート完全な機能」...)
10 bash  ls  path  autocomplete 

1
macOS SierraのPATHに項目を追加するには、 `/ etc / paths`または` / etc / paths.d`を使用しますか?
さまざまな場所で、/usr/libexec/path_helperそしてすべてについての議論で収集したものから、PATHmacOS Sierra 10.12の環境変数にアイテムを追加する現代的な方法は、明らかに次のいずれかです。 /etc/pathsファイルを編集する /etc/paths.dディレクトリから読み取るファイルを追加します。 私の質問: 現代のmacOSでどちらがより良いですか? より良いまたはより一般的な方法がファイルをpaths.dディレクトリにドロップすることである場合、それらのファイルの名前と内容は何であるべきですか?例はありますか? zshではなく使用していbashます。違いはありますか? これら2つのオプションはmacOSに固有のものですか?または、それらはBSDまたは他のUnixライクなシステムに表示されますか?
10 osx  zsh  path  etc 

1
zsh-<tab>のバイナリパスを完全に展開する
私の現在のzsh動作では、「sudo」と入力した後でタブを押すと、スペースが追加されるだけです。 $ sudo ... 私が本当に望んでいるのは、タブを押したときに実行しようとしているバイナリのパスにタブを完全に拡張して、何が実行されるかを確認できるようにすることです。 $ /usr/bin/sudo ... 目的は、私のマシンのローカルユーザーがハッキングされ、$PATH変数にエントリが追加され、'sudo'が悪意のあるプログラムを実行するケースから保護することです。これにより、ルートに簡単にエスカレーションされます。
10 zsh  path  autocomplete 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.