set
次のように入力すると、コマンドは正しく機能します。
echo $0
/usr/bin/tcsh
echo $SHELL
/usr/bin/tcsh
set START_TIME=`date +%s`
echo $START_TIME
1499360060
tcsh
ただし、次のように明示的に呼び出すと機能しません。
/usr/bin/tcsh -i -f -c 'set START_TIME=`date +%s`'
echo $START_TIME
START_TIME: Undefined variable.
最初はこれを試しましたが、setenv
子プロセスがコマンドを実行できないことに気づきましたsetenv
。だから私はset
それが行く道だと思います。この問題を解決する他のより良い方法があるかどうかアドバイスしてください。ありがとうございます。
答え1
問題は、サブシェルで変数を設定してからサブシェルが終了し、変数も一緒にインポートされることです。展示する:
$ /bin/tcsh -ifc 'set VARIABLE=foo; echo $VARIABLE'; echo ${VARIABLE-blank}
foo
blank
(私のデフォルトのシェルはですbash
。2番目のシェルはismをecho
使用してbash
定義されていないか、NULL変数拡張のデフォルト値を提供します)