MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
シェルスクリプトの基礎 - パスの取得のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
シェルスクリプトの基礎 - パスの取得
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == ここでは、シェルスクリプトで相対パスと絶対パスを取得する方法を記載する。<br> <br><br> == 相対パスの取得 == ディレクトリの相対パスを取得するには、<code>dirname $0</code>を使用する。<br> <br> 特殊変数$0には、現在実行しているシェルスクリプトの相対パスが格納されており、<br> <code>dirname</code>コマンドは、引数に与えられたファイルのパスからディレクトリのパスを取得する。<br> 逆に、<code>basename</code>コマンドはファイル名を取得することができる。<br> <br> 以下の例では、以下のシェルスクリプトが/home/username/develop/test.shに存在する時、<br> このシェルスクリプトを/home/usernameディレクトリから実行すると、以下のように相対パスが出力される。<br> <syntaxhighlight lang="sh"> #!/bin/sh echo $0 echo `dirname $0` echo `basename $0` # 出力 develop/test.sh # $0の結果 develop # dirname $0の結果 test.sh # basename $0の結果 </syntaxhighlight> <br><br> == 絶対パスの取得 == 絶対パスを取得する手順を以下に記載する。<br> <br> まず、<code>pwd</code>コマンド(環境変数$PWDを使用しても同じ)でシェルスクリプトを実行したディレクトリのパスを取得する。<br> <code>cd dirname $0</code>で絶対パスを取得する。<br> <br> 次に、<code>cd</code>コマンドを使用してディレクトリを移動した後、<code>pwd</code>コマンドで絶対パスを取得する。<br> <code>$(コマンド)</code>または<code>`コマンド`</code>のコマンド置換を忘れないこと。<br> <br> また、コマンド置換はサブシェルで実行されるため、元の環境には影響を与えない。<br> <br> <syntaxhighlight lang="sh"> #!/bin/sh echo $(cd $(dirname $0) && pwd) # 実行 sh develop/test.sh # 出力 /home/username/develop # $(cd $(dirname $0) && pwd)の結果 </syntaxhighlight> <br> <u>※注意</u><br> <u><code>cd</code>コマンドを使用する場合は、以下のコマンド置換に注意すること。</u><br> <syntaxhighlight lang="sh"> #!/bin/sh echo $(cd $(dirname $0) && pwd) # これ以降もcdされてない状態で実行される ... cd $(dirname $0) echo pwd # これ以降はcdされた状態で実行される ... </syntaxhighlight> <br> また、以下のどの方法でも、カレントディレクトリの絶対パスを取得できる。<br> <syntaxhighlight lang="sh"> current_dir=$(pwd) current_dir="$PWD" current_dir=`pwd` </syntaxhighlight> <br><br> == 実行中のシェルスクリプトがあるディレクトリに移動する == シェルスクリプトの処理において、シェルスクリプトが配置されているディレクトリをカレントディレクトリとすることを前提として記述されている場合、<br> 他のディレクトリにいる時、シェルスクリプト内のコマンドを実行することができなくなってしまう。<br> <br> このような場合、シェルスクリプトの先頭で、そのシェルスクリプトがあるディレクトリに移動するように記述すると、<br> どのディレクトリからでも実行できるスクリプトにすることができる。<br> <br> 以下の例では、<code>dirname</code>コマンドを利用してカレントディレクトリを移動している。<br> シェルスクリプトは新しく起動したシェル内で実行されるため、このスクリプトを起動したシェルのカレントディレクトリが移動することはない。<br> <br> <u>ただし、<code>source</code>コマンドで起動した場合はカレントディレクトリが移動するので、注意すること。</u><br> <syntaxhighlight lang="sh"> #!/bin/sh # シェルスクリプトのあるディレクトリへ移動 cd `dirname $0` # あとは好きな処理を記述していく ... </syntaxhighlight> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:シェルスクリプト]]
シェルスクリプトの基礎 - パスの取得
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse