![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.3ベストアンサー
- 回答日時:
sourceコマンドは、今実行しているシェルの環境でファイル中のコマンド群を実行するコマンドです。
なので、perlなどシェルでないものから実行する意味はありません。
なぜsourceコマンドを実行したいと思ったのかを書くと、良いアドバイスが得られるでしょう。
perlの実行時の環境変数を、あるファイル中のexportコマンドによって設定したいと言うことなら、
案1:実行前にシェルでsourceコマンドを実行する(#1さんの回答の通り)
案2:ファイルの中身をperlで解釈して$ENVを設定する(質問にお書きの通り)
ありがとうございます。
実現したかった内容は
source config
%>cat config
source /hoge/hoge/hoge.config
setenv aaa bbbb/ccc/dddd
:
:
など、configファイル内で設定されている環境変数群をPerlスクリプト内で
参照したいという点です。
上記例のように、sourceしたファイルの中にはまた、source指定があり、その先にも・・・
という点からすべての環境変数を自分で解読して、$ENV{}に入れるには手間がかかりすぎ
なんとかしたいという意図でした。
perlスクリプトを実行前にあらかじめsourceコマンドを実行したり、
No1さんのように、実行ファイルを用意すれば済む話なのですが
このようなスクリプトを沢山用意する必要から、極力1つでまとめたいと思っておりました。
No.5
- 回答日時:
#2です。
・ setenv や souce を含んだ設定ファイルが何十個もある
・ そこに書いてあるsetenvを実行した上でperlスクリプトを実行したい
・ 追加で作るものは最小限にしたい
と言うことでしょうか?
#!/bin/csh
source $1
shift
perlスクリプト $argv
というスクリプトを作って、第一引数にsourceしたいファイルを書いてそれ以降に本来の引数を書きます。
No.4
- 回答日時:
setenvということはcsh系ですか...
解析が面倒なら、 csh上でsource→perlを実行、とするしか無いでしょう。
#!/bin/csh -f
source config
perl $argv
というスクリプトを Perl.cshとでもしておいて
Perl.csh Perlのスクリプト 引数....
で実行。
Perlのスクリプト毎にCshスクリプトを用意する必要はない
perlのスクリプトの先頭にでも
if ( $ARGV[0] ne '--config' ) {
$com="source config ; perl $0 --config " . join(' ',@ARGV) ;
system( 'csh -f -c \'' . $com . '\'' );
exit ( 0 ) ;
}
とでもして
・普通に実行→上の部分が有効になり、cshでsource→"--config"を付けてperlを実行
・↑で呼ばれたperlは--configが付いているので、上のifはなにもせず通過
ただ、どちらも完璧ではありません。
スクリプト名や、引数に空白文字を含む場合、いろいろと不具合が発生すると思います。
No.2
- 回答日時:
どんなプログラムやスクリプトやフレームワークなどを含むシステムでも、同じ注意事項です(Perl意外でもということ)。
スクリプト言語の正しい呼び出し方は(インタープリター言語として扱う)
[コマンド名] [そのコマンドに対応したスクリプトファイル名]
です。スクリプトファイルを実行してスクリプトとして認識するための仕組みを通常シェルレベルで備わっていて、UNIX系(Linuxを含む)では、そのファイルに実行権が付いていると、実行しようとしますが、何のシェルスクリプトかは実行したシェルにより、そのシェルスクリプトとして実行されます。
実行シェル意外で実行したければNo1の方のように先頭行に、おまじないを書くと、UNIX系のシェルでは、その指定したシェルで実行します。
今回の場合、Perlが、実行シェルです。なので、Perlに先頭のおまじないが効けばいいわけです。つまりSYSETM()が渡す実行環境が実行したユーザーの思うところシェルであれば、そのまま指定したシェルで実行されますが、どうなんでしょうね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- UNIX・Linux linuxサーバーのキャッシュをクリアするコマンドを実行したい。 5 2023/01/24 14:52
- その他(パソコン・スマホ・電化製品) LINUXPCに詳しい人に気楽に答えてほしい質問です。 2 2022/10/25 08:07
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Windows 10 ネットワークプリンターにファイルを直接送る方法・コマンドないですか?(´・ω・`) 3 2023/03/13 23:15
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlで時間の計算
-
テキストファイルで提出とは?
-
perlプログラミング 空白行削除
-
Perlで特定文字列から特定文字...
-
openした後、closeしないでプロ...
-
PerlでUTF-8のファイルの文字列...
-
bashスクリプト
-
arduino の割り込み処理について
-
Perl テキスト 列検索
-
アルファベットに付いて質問し...
-
perlで複数のファイルの処理に...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
ファイルアイコンの左下に緑の□...
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
perlについて
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
アルファベットに付いて質問し...
-
Perl の外部モジュールの利用方法
-
Strawberry Perl for Windows ...
-
Perlのエラーについてご教授く...
-
perlプログラミング 空白行削除
-
INDIRECT 横に再度抽出したい
-
Perlで時間の計算
-
Wallpaper Engineでおすすめの...
-
bashスクリプト
-
perlでリテラル値はメモリにど...
-
perlのプログラミング 部分入れ...
-
Perlで特定文字列から特定文字...
-
perl LWPでURLにアクセスした時...
-
perlで2次元配列をサブルーチ...
-
perlのrequireの動き方について...
-
ファイルアイコンの左下に緑の□...
-
C言語の問題について
おすすめ情報