script.sh
ターミナルを開いてから、この開いたターミナルでいくつかのコマンドを実行することになっているシェルを実行しています。ターミナルは起動しますが、このターミナルでは次のコマンドが実行されません。誰かがこれを通してターミナルを開いた後、script.sh
他のいくつかのコマンドを実行する方法を教えてください。これは私のscript.sh
ファイルです:
#!/bin/bash
gksu -u userA /usr/bin/gnome-terminal PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts
その最初のコマンドはgksu -u userA /usr/bin/gnome-terminal
、端末のインスタンスを開き、私は2つの次のコマンドを実行する方法を求めているPACKAGE_PATH=/home/userA/package1
とcd /home/userA/scripts
使用して、この開いた端末インスタンスでscript.sh
編集:
ムルの提案を適用した後、これは私が使用したものです:gnome-terminal -x sudo -u userA bash -c 'PPACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH; cd /home/userA/scripts; source varset.sh; bash'
しかし、それは私がそれを置いたのと同じ順序で実行されません。
ターミナルに表示される最初の行は、variables.shにあるメッセージです(ただし、これは実行する3番目のコマンドである必要があります)。もう1つは、これを使用して設定する必要のある変数が設定されていないことvarset.sh
です。私はecho $ var1(variables.shにあります)は何も表示しません。これは、変数が設定されていないことを意味します。variables.shで機能するのはエコーメッセージだけです。
ディレクトリに表示される2行目は、に設定されている端末の作業ディレクトリ/home/userA/scripts
です。
3つ目PACKAGE_PATH=PACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH
は、$ PACKAGE_PATH変数を設定するこのコマンドが機能していないことです。
したがって、誰かがこのコマンドをこの順序で実行する方法と、最初のコマンドの変数とvarset.sh
シェルファイルの変数を設定する方法をアドバイスしてください。
シェルを開いたままにする方法として、次のことを提案しました。
gnome-terminal -x sudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH; \
cd /home/userA/scripts; \
source varset.sh; \
bash'
ただし、最後のものは、エクスポートされていない場合bash
、$PACKAGE_PATH
またはからの割り当ての影響を受けsource varset.sh
ません。
そう:
gnome-terminal -x sudo -u userA bash -c 'export PACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH; \
cd /home/userA/scripts; \
source varset.sh; \
bash'
varset.sh
トリックを行う必要が輸出しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加