【问题标题】:Setup bash shell or command prompt to run Python project [duplicate]设置 bash shell 或命令提示符以运行 Python 项目 [重复]
【发布时间】:2016-07-01 20:02:42
【问题描述】:

想要从任何单个脚本执行以下命令。如何做到这一点?

每当我开始我的 putty 会话时,在我的 unix 机器上,bash shell 即将到来,然后我需要输入以下命令来设置我的工作区。

下面是我正在做的确切过程。

    -bash-4.2$ bash
    [userName@SystemName ~]$ su

getting admin rights
    [root@SystemName userName]#

setting up environment variable for python project
    [root@SystemName userName]# source xxxx.env

setting the path for my local workspace
    [root@SystemName userName]# setxxxx /home/userName/SourceCode/

现在,我希望从单个脚本中执行所有这些命令。 因此,我将所有这些命令放入一个 shell 脚本并尝试执行,但只执行了第一条指令。 为什么?

start.sh

    #!/bin/bash
    bash
    su
    source ssdt.env
    setssdt /home/userName/projectName/

【问题讨论】:

  • 因为 su 创建了新的 shell,尝试将脚本的第一行更改为 #!/bin/su -c /bin/bash 并从脚本正文中删除 su
  • 你为什么不直接运行su -c 'source ssdt.env && setssdt /home/adubey/Test_Tip/'
  • 如果您必须su 封装在脚本中而不是从外部调用它,请考虑在每个命令前加上sudo 前缀。而且,正如其他人所说,从脚本中删除 bashsu,因为它们都会调用一个新的 shell。
  • @paddy sudo 在每一行都会有相同的“新会话”问题。
  • 我会在脚本开头添加这个[ $UID != 0 ] && exec sudo "$0" "$@"

标签: linux bash python-2.7 python-3.x unix


【解决方案1】:

脚本中的第一个命令是bash,它会打开一个新的shell,直到您退出它,它才会继续执行脚本中的其他命令。如果您只是想让脚本使用 bash 执行,那就是 #!顶部的线可以。 su 命令还将打开一个子shell,在其他命令以正常权限运行之前必须退出该子shell。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2017-01-27
    相关资源
    最近更新 更多