Open12

Linux command & Shell script (+WSL)

comapicomapi

環境変数にAが設定されていない、またはBかCのどちらも設定されていないといったとき

if [ ! -v A ] || { [ ! -v B] && [ ! -v C]; }; then
    ###
fi
comapicomapi

コマンドが存在するか確認

command -v コマンド名

※ 応用

install_mlflow.sh
if ! command -v mlflow &>/dev/null; then
    sudo apt-get install -y libsqlite3-dev
    python3 -m pip install mlflow pysqlite3
fi
comapicomapi

WSL2にWindows上のフォルダをマウント

sudo ln -s /mnt/c/Users/ユーザー名/Desktop/Documents /home/ユーザー名/Documents
comapicomapi

PATHの追加

export PATH=$PATH:追加したいPATH

永続化したい場合は.bashrcに書き込む。

comapicomapi

WSLユーザー追加

wsl
sudo adduser username

sudo権限付与

Powershell
# rootユーザーでログイン
wsl -u root

# sudoグループに追加
usermod -G sudo username

デフォルトのユーザー設定

/etc/wsl.confに以下追記

[user]
default=username
comapicomapi

pdb(Python デバッガ)を使用しているときに、同時に Bash コマンドを実行したい場合は、いくつかの方法があります。

方法 1: ! コマンドを使う

pdb では、! を使って Python のデバッガ内から Bash コマンドを実行できます。例えば、以下のようにします。

(Pdb) !ls -l

これにより、ls -l コマンドが実行され、その結果が pdb のコンソールに表示されます。

方法 2: デバッガを一時的に終了する

デバッガの実行を一時的に終了して、コマンドラインから直接 Bash コマンドを実行する方法もあります。

  1. デバッガを一時的に停止するには、Ctrl+Z を押してプロセスをバックグラウンドに移動します。
  2. コマンドラインで必要な Bash コマンドを実行します。
  3. fg コマンドを使ってデバッガに戻ります。
$ fg

方法 3: デバッガからシェルを起動する

pdb の中から直接シェルを起動して、その中でコマンドを実行する方法もあります。これには ! ではなく、os.system を使用する方法があります。

  1. os モジュールをインポートし、os.system を使用してコマンドを実行します。
(Pdb) import os
(Pdb) os.system('ls -l')

これにより、シェルコマンドを実行できますが、出力は pdb コンソールに表示されます。

方法 4: code モジュールを使って interactive シェルを起動

デバッガを使っている最中にインタラクティブシェルを起動するためには、code モジュールを使用することができます。

(Pdb) import code; code.interact(local=locals())

これにより、Python インタラクティブシェルが起動し、そのシェルから Bash コマンドを実行することができます。ただし、これは Python 環境内での操作となるため、シェルコマンドの実行には制限があります。

これらの方法を使用して、pdb のセッション中に Bash コマンドを実行できます。用途や状況に応じて最適な方法を選んでください。